JQuery验证插件: valid() returns false for non-required fields

标签 jquery validation

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/

相关文章:

javascript - jQuery 图像 src 通过单选按钮更改

javascript - 递归扫描 DOM 元素 - Javascript

php - 使用 PHP 和 MySQL 验证之间的日期

wpf - Validation.ErrorTemplate 未显示

c++ - 验证键盘输入并显示

javascript - 数字的表单验证

php - 如果 id 相同,Laravel 验证唯一性

jQuery 将图像转换为灰度?

javascript - Jquery slideDown() 无法正常工作

javascript - 如何使用 jQuery 滚动到页面的一部分?