0

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

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

这是代码的相关部分:

$("#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”,它添加了类和标签文本。

4

1 回答 1

0

unhighlight回调函数是相反的,highlight不是success。并且element, 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');
},

参见: 回调函数文档

于 2013-07-24T18:22:17.840 回答