jQuery Validate插件和Masked Input - 忽略不起作用

时间:2013-07-24 17:58:53

标签: jquery jquery-validate

我有一个不需要的表单中的字段(在验证中没有规则),但我确实添加了屏蔽输入,这样如果用户想要输入信息,它将是一种有用的格式

但是,如果我点击该字段并触发屏蔽输入,它似乎验证(变为绿色并给出“OK”)。我尝试将ignore添加到validate中,但它仍然返回为有效。

以下是代码的相关部分:

$("#ssn").mask("999-99-9999",{placeholder:" "});
$("#jqvForm").validate({
    ignore: ".ignore",
    onkeyup: false,
    highlight: function (label) {
        $(label).closest('.form-element').addClass('error')
            .closest('.form-element').removeClass('success');
        $('#result').html(''); 
    },
    success: function (label) {
        label.text('OK!').addClass('valid')
            .closest('.form-element').addClass('success');
    },
    rules: { etc },
    messages: { etc }
});

我的SSN输入字段确实有class =“ignore”但正在调用“success”来加入类和标签文本。

1 个答案:

答案 0 :(得分:0)

unhighlight回调函数与highlight相反,而不是successelement, errorClass, validClass是这两个回调函数的唯一有效参数,而不是label

您也不必在同一个链中选择.closest('.form-element')两次;一次就够了。我看不到你的HTML,所以我甚至不确定你是否需要这个选择器。我假设element.closest('.form-element')相同,所以我删除了后者。否则,请根据需要调整此答案。

试试这个......

highlight: function (element, errorClass, validClass) {
    $(element).addClass('error').removeClass('success');
    $('#result').html(''); 
},
unhighlight: function (element, errorClass, validClass) {
    $(element).removeClass('error').addClass('success');
},
success: function (label) {
    label.text('OK!').addClass('valid');
},

请参阅:Callback function documentation