js处理前端页面复选框多页复选同时生效的问题

发布时间 2023-11-14 19:34:34作者: 一剑一叶一花
虽然是后端开发,但在实际的工作中难免会碰到一些前端相关的任务需要自己处理,下面就是本人开发工作中处理的前端相关分页复选的问题。总结一下,以备日后重复遇到:
<script type="text/javascript">
//初始化数据
$(function () {

$('#queryButton').removeAttr('disabled');

var ischeckedAll = window.sessionStorage.getItem("ischeckedAll");
//代表全选
if (ischeckedAll != null && ischeckedAll == 1) {
$('#checkbox-all').attr("checked", "checked")
        // 初始化的时候如果是全选,则将当前页的复选框全部置true
$(":checkbox[name='checkbox']").attr('checked', "checked");

var item = window.sessionStorage.getItem("notCheckRecordId");
if (item != null) {
$('input:checkbox:checked').each(function () {
//如果剔除的数据中包含当前页的选中数据则将选中数据置false
var recordId = $(this).closest("tr").find("td").eq(0).find("input[name='recordId']").val();
// console.log(recordId);
if (new String(item).lastIndexOf(new String(recordId)) > 0) {
$(this).prop('checked', false);
}
;
});
}
}

});

//点击查询时清空session 中的数据
$('#queryButton').click(function () {
window.sessionStorage.clear();
});

//发起批量调账(操作实例:如果没勾选全选则传递的是当前页的选中的需要处理的数据的id集合,不管其他页有没有勾选;如果选中了全选按钮则传递的参数包含:全选标识、剔除id、和当前的所有查询条件 注:后端会根据条件查询所有数据然后根据剔除id剔除掉不满足的数据进行下一步操作)
$('#manualAsk').click(function () {
var ischeckedAll = window.sessionStorage.getItem("ischeckedAll");

if (ischeckedAll == null) {
ischeckedAll = 3;
}
if ($('input[name="checkbox"]:checked').length == 0) {
alert('<%=getString("请选择需要补单的订单")%>!');
return;
}

//拿到勾选的值
var recordIdArr = new Array();
// var recordIdArrNo = new Array();
//循环所有选中的值 拿到行
$('input[name="checkbox"]:checked').each(function (index, element) {
//追加到数组中
recordIdArr.push($(this).closest("tr").find("td").eq(0).find("input[name='recordId']").val());
});
var notCheckRecordId = new Array(window.sessionStorage.getItem("notCheckRecordId"));

console.info("selectValue:" + recordIdArr)
console.info("cancelValue:" + notCheckRecordId)
// var content = {
// recordIdList: JSON.stringify(recordIdArr)
// };

$.ajax({
url: "<%=basePath%>" + "/BillDanBill",
data: "record_id=" + recordIdArr + "&notCheckRecordId=" + notCheckRecordId + "&ischeckedAll=" + ischeckedAll + "&id=<%=id%>&MerOrderNO=<%=MerOrderNO%>&card_bin=<%=card_bin%>&trade_type=<%=trade_type%>&trade_no=<%=trade_no%>&arn=<%=arn%>&refund_id=<%=refund_id%>&merno=<%=merno%>&authorization_code=<%=authorization_code%>&reconciliation_result=<%=reconciliation_result%>&status=<%=status%>&startTime1=<%=startTime1%>&startTime2=<%=startTime2%>&endTime1=<%=endTime1%>&endTime2=<%=endTime2%>",
type: "get",
async: false,
success: function (data) {
if (data == 1) {
alert('<%=getString("操作成功!")%>');
// history.back(-1);
// window.open('err_account_detail.jsp?', '_self');
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('<%=getString("处理失败,请重试!")%>');
}
});
});

//全选和反选事件(点击全选按钮移除session中的剔除数据,并将当前页的复选框置为true)
$("#checkbox-all").click(function () {
$(":checkbox[name='checkbox']").prop('checked', this.checked);

window.sessionStorage.removeItem("notCheckRecordId");

var isCheckedAll = 0;
if (this.checked) {
isCheckedAll = 1;
}
window.sessionStorage.setItem("ischeckedAll", isCheckedAll);

});

//全选与单选的关系(就是将取消的复选框数据的id存到session中,选中的id从session中删除)
$("input[name='checkbox']").click(function () {
// $("#checkbox-all").prop("checked", $("input[name='checkbox']").length == $("input[name='checkbox']:checked").length);
if (!this.checked) {
var notCheckRecordId = new Array(window.sessionStorage.getItem("notCheckRecordId"));
if (notCheckRecordId != null) {
notCheckRecordId.push($(this).closest("tr").find("td").eq(0).find("input[name='recordId']").val());
// $.session.set("notCheckRecordId",notCheckRecordId);
window.sessionStorage.setItem("notCheckRecordId", notCheckRecordId);
} else {
var notCheckRecordId1 = new Array();
notCheckRecordId1.push($(this).closest("tr").find("td").eq(0).find("input[name='recordId']").val());
window.sessionStorage.setItem("notCheckRecordId", notCheckRecordId1);
}
} else {
var notCheckRecordId = window.sessionStorage.getItem("notCheckRecordId");
if (notCheckRecordId != null) {
var repeatValue = $(this).closest("tr").find("td").eq(0).find("input[name='recordId']").val();
notCheckRecordId = notCheckRecordId.replace(repeatValue.toString(), "");
window.sessionStorage.setItem("notCheckRecordId", notCheckRecordId);
}
}
});
</script>