diff --git a/erpnext/schools/api.py b/erpnext/schools/api.py
index dea8515..7cb02a3 100644
--- a/erpnext/schools/api.py
+++ b/erpnext/schools/api.py
@@ -54,13 +54,13 @@
 	"""
 	present = json.loads(students_present)
 	absent = json.loads(students_absent)
-
 	for d in present:
 		make_attendance_records(d["student"], d["student_name"], "Present", course_schedule, student_batch, date)
 
 	for d in absent:
 		make_attendance_records(d["student"], d["student_name"], "Absent", course_schedule, student_batch, date)
 
+	frappe.db.commit()
 	frappe.msgprint(_("Attendance has been marked successfully."))
 
 def make_attendance_records(student, student_name, status, course_schedule=None, student_batch=None, date=None):
@@ -79,7 +79,6 @@
 	student_attendance.date = date
 	student_attendance.status = status
 	student_attendance.submit()
-	frappe.db.commit()
 
 @frappe.whitelist()
 def get_student_batch_students(student_batch):
@@ -87,7 +86,7 @@
 
 	:param student_batch: Student Batch.
 	"""
-	students = frappe.get_list("Student Batch Student", fields=["student", "student_name"] , filters={"parent": student_batch}, order_by= "idx")
+	students = frappe.get_list("Student Batch Student", fields=["student", "student_name", "idx"] , filters={"parent": student_batch}, order_by= "idx")
 	return students
 
 @frappe.whitelist()
diff --git a/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js b/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js
index 6dc9181..2dc6a85 100644
--- a/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js
+++ b/erpnext/schools/doctype/student_batch_attendance_tool/student_batch_attendance_tool.js
@@ -88,16 +88,23 @@
                 });
             });
 
+        var get_student = function(idx) {
+            return students.filter(function(s) {
+                return s.idx === idx;
+            })[0]
+        }
+
         student_toolbar.find(".btn-mark-att")
             .html(__('Mark Attendence'))
             .on("click", function() {
                 var students_present = [];
                 var students_absent = [];
                 $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
+                    var idx = $(check).data().idx;
                     if ($(check).is(":checked")) {
-                        students_present.push(students[i]);
+                        students_present.push(get_student(idx));
                     } else {
-                        students_absent.push(students[i]);
+                        students_absent.push(get_student(idx));
                     }
                 });
                 frappe.call({
@@ -118,9 +125,12 @@
         $.each(students, function(i, m) {
             $(repl('<div class="col-sm-6">\
 				<div class="checkbox">\
-				<label><input type="checkbox" class="students-check" student="%(student)s">\
-				%(student)s</label>\
-			</div></div>', { student: m.student_name })).appendTo(me.wrapper);
+				<label><input data-idx="%(idx)s" type="checkbox" class="students-check" data-student="%(name)s">\
+				%(idx)s - %(name)s</label>\
+			</div></div>', {
+                name: m.student_name,
+                idx: m.idx
+            })).appendTo(me.wrapper);
         });
     }
 });
\ No newline at end of file
diff --git a/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py b/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py
index 8c6006e..2f8ba52 100644
--- a/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py
+++ b/erpnext/schools/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.py
@@ -31,7 +31,7 @@
 				total_p += 1
 			elif status == "Absent":
 				total_a += 1
-		
+
 		row += [total_p, total_a]
 		data.append(row)
 
