jqGrid本地行校验需求:拦截POST请求,点击完成时校验行数为指定值
jqGrid 本地校验表格行数实现方案
你之前尝试的beforeSubmit事件不适用这个场景——它是针对表单提交到后端的触发事件,而你需要的是点击「完成」按钮时的本地校验,直接给按钮绑定点击事件即可实现:
实现步骤
1. 绑定「完成」按钮点击事件
如果「完成」按钮是jqGrid导航栏的自定义按钮,用navButtonAdd添加并绑定逻辑:
// 假设表格ID是gridId,分页栏ID是pagerId $("#gridId").jqGrid('navButtonAdd', '#pagerId', { caption: "完成", buttonicon: "ui-icon-check", // 可选,添加图标 onClickButton: function () { // 获取表格当前页的行数(若需总记录数,改用'getGridParam', 'records') var currentRowCount = $(this).jqGrid('getGridParam', 'reccount'); var requiredRowCount = 10; // 指定的行数要求 // 校验逻辑 if (currentRowCount !== requiredRowCount) { // 展示错误提示,用jqGrid自带的对话框 $.jgrid.info_dialog( "校验失败", `表格必须包含${requiredRowCount}行数据,当前仅${currentRowCount}行`, "确定" ); return; // 终止后续操作 } // 校验通过后执行的逻辑 console.log("行数校验通过,执行后续操作"); } });
如果「完成」按钮是页面独立按钮,直接绑定click事件:
$("#finishButton").on('click', function() { var currentRowCount = $("#gridId").jqGrid('getGridParam', 'reccount'); var requiredRowCount = 10; if (currentRowCount !== requiredRowCount) { $.jgrid.info_dialog( "校验失败", `表格必须包含${requiredRowCount}行数据,当前仅${currentRowCount}行`, "确定" ); return; } // 校验通过后的操作 });
2. 关键说明
reccount:获取当前页的行数,适用于不分页或需校验当前页行数的场景;records:获取表格总记录数,适用于分页场景下校验总行数的需求;$.jgrid.info_dialog是jqGrid自带的提示组件,样式和表格统一,也可替换为原生alert或自定义模态框。
内容的提问来源于stack exchange,提问作者dduka
相关产品推荐
相关产品推荐

