在后台系统开发中,往往需要涉及对信息的批量操作,例如全选的checkbox;如图:
选中一级页面前面的checkbox就会全选,JS实现如下:
html代码:
<input id="ckAll" type="checkbox" name="chkA"/>一级页面 <input name="chkChild" type="checkbox" id="13"/>人物
JS代码:
$(function () { //全选 $("input[name=chkA]").click(function () { $("input[name=chkChild]").attr("checked", $(this).attr("checked")); //选中全部信息 var flag = $(this).attr("checked"); $("input[name=chkA]").each(function () {//选择上下全选框 $(this).attr("checked", flag); }); }); //选中信息 $("input[name=chkChild]").click(function () { if (!$(this).attr("checked")) {//当前记录未选中,全选不选中 $("input[name=chkA]").each(function () { $(this).attr("checked", false); }); } else//当前记录选中 { var flag = true; var $inputs = $("input[name=chkChild]"); for (var i = 0; i < $inputs.length; i++) { if (!$($inputs[i]).attr("checked")) { flag = false; break; } } $("input[name=chkA]").each(function () { $(this).attr("checked", flag); }); } }); })
然后通过ajax将选中的信息传递给一般处理程序,更改数据库;
////批量操作 function changeChecked(strUser, fstCgID) { var times = $("#hdclicks").val(); $("#hdclicks").val(times + 1); times = $("#hdclicks").val(); if (times > 1)//解决操作过程中重复操作 { alert("正在处理,请稍后操作"); return false; } var msg = "确定要批量操作吗?"; var alertmsg = "请选择要操作的信息!"; var $inputs = $("input[name=chkChild]"); var keyId = ""; for (var i = 0; i < $inputs.length; i++) { if ($($inputs[i]).attr("checked")) { keyId = keyId + $($inputs[i]).attr("id") + ","; } } if (keyId.length > 0) { if (confirm(msg)) { keyId = keyId.substr(0, keyId.length - 1); $.ajax({ type: 'Post', url: 'UserControl/CategoryOperate.ashx', data: { action: 'changeUpdTypeMult', CgID: keyId, User: strUser, UpdType: $("#selectUpdType>option:selected").get(0).value }, success: function (res) { if (res != "1") { alert("操作失败,请重试。"); window.location.href = "TasksTree.aspx?fstCGID=" + fstCgID; } else { window.location.href = "TasksTree.aspx?fstCGID=" + fstCgID; } }, error: function () { alert("操作请求发送失败,请重试!"); } }); } else { $("#hdclicks").val(times - 1); return false; } } else { alert(alertmsg); } }
注意在html页面中增加:
<input type="hidden" id="hdclicks" value="0" />