valid()函数指出: “检查所选表格是否有效或所有选定的元素是否有效。”
这似乎意味着我们可以使用选择器测试一组控件(我们正在测试asp.net表单上的控件),例如。
$('div[id$=pnlBillingInfo] .Field input').valid()
如果需要所有字段,则此方法有效。但是,如果一个字段不需要验证(required = false),则当此字段留空时,valid()将返回false。
这种行为似乎不正确 - 我们错过了什么吗?我们应该能够将这些可选字段留空,并且仍然可以使控件组验证正常。
如果我们尝试验证此可选字段 - 结果为'undefined',例如
$("#aspnetForm").validate().element('input[id$=txtBillingAddress2]')
jQuery 1.4.2
jQuery插件验证1.7(最新版本)
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
谢谢!
答案 0 :(得分:1)
我发现将表单验证规则与验证事件实际分开是有用的(即:表单提交的时刻)。
您需要为表单设置规则 - 在JS或HTML中通过每个输入/选择/等的类。
我更喜欢通过JS来实现它,因为它可以保持DOM清洁;另外,我通常将表单的规则放在$(document).ready()函数之外:
$('#form').validate({
rules: {
[...]
},
messages: {
[...]
}
});
这实际上没有任何功能。它只是设定规则。
当您需要实际验证表单时,可以通过触发.valid()
事件来检查这些规则:
$(document).ready(function(){
$('#form').submit(function(){
// Check validity
if (!$(this).valid()) return false;
// Form is valid, so submit it!
[...]
});
});
答案 1 :(得分:1)
当规则方法使用“this.optional(element)”检查可选字段时,库中存在错误。当该字段为空时,this.optional返回“dependency-mismatch”,验证方法返回“undefined”,将该字段标记为无效。
这里有完整的解释: