【发布时间】:2011-07-07 21:59:08
【问题描述】:
我有一个表单,用户可以在其中继续向列表中添加项目。当他们提交此页面时,我想验证此列表中是否确实包含项目(而不是已验证的单个项目)。每个项目都被添加到表中的新行中,TR 具有额外的“动作”属性......所以它看起来像:
<tr action="whatever">...</tr>
我试图做的是添加一个自定义 addMethod,它调用一个函数,该函数将计算带有 action 的行数作为属性:
$("#tableID").find("tr[action]").length
如果该长度大于 0,则返回 true,否则返回 false。
这在验证器调用之外工作正常,但由于某种原因它完全跳过它。
我真的可以使用一个示例或一些见解来了解如何使它验证此规则,即使它不是专门的表单元素。
按比例缩小的代码:
*请注意,我已经为消息设置了默认值,而没有设置。
$.validator.addMethod("validProductList", function (value, element) {
return this.optional(element) || validateProductList();
}, "You have no products in your list");
$("#processForm").click(function () {
$("#pageForm").validate({
submitHandler: function () {
$("#errors").hide();
//processPage();
},
rules: {
//other rules,
validProductList: true
}
});
});
function validateProductList() {
var isValid = false;
var useList = $("#tblAddedProducts").find("tr[action]").length;
if (useList > 0) { isValid = true; }
return isValid;
}
【问题讨论】:
标签: jquery jquery-validate validation