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
相关产品推荐
相关产品推荐

