You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:36:00