valid() 函数指出: “检查所选表单是否有效或所有所选元素是否有效。”
这似乎意味着我们可以使用选择器测试一组控件(我们正在 asp.net 表单上测试控件),例如
$('div[id$=pnlBillingInfo] .Field input').valid()
如果所有字段都是必需的,则此方法有效。但是,如果一个字段不需要验证(required = false),则当该字段留空时 valid() 返回 false。
这种行为似乎不正确 - 我们是否遗漏了什么?我们应该能够将这些可选字段留空,并且仍然让控件组验证正常。
如果我们尝试验证此可选字段 - 结果是“未定义”,例如
$("#aspnetForm").validate().element('input[id$=txtBillingAddress2]')
jQuery 1.4.2
jQuery插件Validation 1.7(最新版本)
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
谢谢!
最佳答案
我发现将表单验证规则与验证事件(即:提交表单的那一刻)真正分开很有用。
您需要通过每个输入/选择/等上的类在 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!
[...]
});
});
关于JQuery验证插件: valid() returns false for non-required fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3124772/