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

jQuery Validate表单如何根据表格是否为空动态调整校验规则

解决方案

核心实现逻辑:jQuery Validate 内置支持动态规则,你可以把校验条件替换为自定义判断函数,根据表格是否为空动态返回是否启用校验。无需修改现有HTML结构,仅调整jQuery校验逻辑即可:

完整修改后的JS代码

$(function () {
    // 公共判断:详情表格是否为空
    function isDetailsTableEmpty() {
        return $('#detailsTable tbody tr').length === 0;
    }

    $("#NewWorkoutForm").validate({
        rules: {
            workoutName: {
                required: isDetailsTableEmpty
            },
            exerciseName: {
                required: isDetailsTableEmpty
            },
            numberOfRepetitions: {
                required: isDetailsTableEmpty,
                number: isDetailsTableEmpty
            },
            weight: {
                required: isDetailsTableEmpty,
                number: isDetailsTableEmpty
            }
        },
        messages: {
            workoutName: {
                required: "Proszę podać nazwę treningu"
            },
            exerciseName: {
                required: "Proszę podać nazwę ćwiczenia"
            },
            numberOfRepetitions: {
                required: "Proszę podać liczbę powtórzeń",
                number: "Proszę podać wartość w liczbach"
            },
            weight: {
                required: "Proszę podać wagę",
                number: "Proszę podać wartość w liczbach"
            }
        },
        submitHandler: function (form) {
            save();
        }
    });

    // 【新增】点击添加到列表按钮后,清除已有的校验错误提示
    $('#addToList').on('click', function () {
        // 这里保留你原本往表格添加行的业务逻辑
        // ...
        // 添加行后重置校验状态,清除错误提示
        $("#NewWorkoutForm").validate().resetForm();
    });
});

逻辑说明

  • 当detailsTable的tbody下没有行时,判断函数返回true,所有必填、格式校验规则正常生效
  • 当表格内至少有1行数据时,判断函数返回false,所有校验规则自动关闭,表单可以直接提交

内容的提问来源于stack exchange,提问作者johny_55

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:05