为什么jQuery Validation Plugin会验证所有字段?

时间:2014-05-26 02:00:01

标签: jquery validation

我在几个表单上运行了jQuery Validation插件,但对它并不完全满意,所以我转向了另一种解决方案。过了一会儿,我发现我需要回到插件,但我无法正常工作。出于某种原因,它想要验证表单中的所有字段,而不仅仅是那些带有规则的字段。

以下是表格:

<form id="test-form">
    <div class="form-group">
        <label for="firstName">First Name</label>
        <input type="text" name="firstName" id="firstName">
    </div>
    <div class="form-group">
        <label for="lastName">Last Name</label>
        <input type="text" name="lastName" id="lastName">
    </div>
    <input type="submit">
</form>

这是javascript:

    $.validator.setDefaults({
        errorClass: 'help-block',
        errorElement : 'span',
        ignoreTitle : true,
        highlight : function (element, errorClass, validClass) {
            $(element).closest('.form-group').addClass('has-error');
        },
        unhighlight : function (element, errorClass, validClass) {
            $(element).closest('.form-group').removeClass('has-error');
        }
    });

    $('#test-form').validate({
        rules: {
            firstName: {
                required: true
            }
        },
        messages: {
            firstName: {
                required: 'First name is required'
            }
        }
    });

当我运行它(两个表单字段都空白)时,我收到firstName的预期错误消息,但我也收到了lastName的错误。该消息只是说“&#39; message&#39;。

这次我真的无法看到我做的不同,但显然它一定是什么东西!

2 个答案:

答案 0 :(得分:1)

您需要将验证插件告诉ignore lastName字段

$('#test-form').validate({
    ignore: '#lastName',
    rules: {
        firstName: {
            required: true
        }
    },
    messages: {
        firstName: {
            required: 'First name is required'
        }
    }
});

答案 1 :(得分:0)

好的,所以这归结为一个可笑的随机配置错误。基本上,在我的基本javascript文件中,我有以下几行:

$.validator.addMethod('name', function() {}, 'message');

我已经开始创建一个自定义验证方法,显然已经分心了。这似乎以某种方式将验证器添加到所有表单元素中!