JQuery Validation Plugin:valid()为非必填字段返回false

时间:2010-06-26 17:19:45

标签: jquery validation

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/

谢谢!

2 个答案:

答案 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”,将该字段标记为无效。

这里有完整的解释:

https://github.com/jzaefferer/jquery-validation/issues/481