如何保持jQuery Validation插件不将'error'类添加到输入框中

时间:2013-08-07 15:28:14

标签: jquery jquery-validate

我有jQuery Validation插件:

//name validation
cnForm.validate({
    rules: {
        customerName: {
            required: true,
            minlength: 3
        },
        date: {
            required: true,
            dateRegex: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d$/,
            maxlength: 10
        }               
    },
    onkeyup: false,
    onclick: false,
    onfocusout: false,
    messages: {
        customerName: {
            required: "Unable to proceed, search field is empty"
        },
        date: {
            required: "Unable to proceed, search field is empty"
        }   
    },
    errorPlacement: function(error, element) {
        var trigger = element.next('.ui-datepicker-trigger');
        error.insertAfter(trigger.length > 0 ? trigger : element);
    }
});

每当我输入导致错误的数据时,我会在输入框/按钮后显示相应的新标签,但类error也会应用于输入框。有没有办法避免将该类分配到框中?感谢。

3 个答案:

答案 0 :(得分:6)

  

“...但是类错误也会应用于输入框。有没有办法避免将该类分配到框中?”

使用highlightunhighlight回调函数覆盖默认函数。

这些是默认值......

    highlight: function (element, errorClass, validClass) {
        if (element.attr('type') === "radio") {
            this.findByName(element.attr('name')).addClass(errorClass).removeClass(validClass);
        } else {
            $(element).addClass(errorClass).removeClass(validClass);
        }
    },
    unhighlight: function (element, errorClass, validClass) {
        if (element.attr('type') === "radio") {
            this.findByName(element.attr('name')).removeClass(errorClass).addClass(validClass);
        } else {
            $(element).removeClass(errorClass).addClass(validClass);
        }
    }

As per docs ...

回调传递三个参数:

  • <强>元素
      类型:元素
      无效的DOM元素,通常是输入。

  • <强> errorClass
      类型:字符串
      errorClass选项的当前值。

  • <强> validClass
      类型:字符串
      validClass选项的当前值。


修改

完全删除此功能......

$('#myform').validate({
    highlight: function (element, errorClass, validClass) {
        return false;  // ensure this function stops
    },
    unhighlight: function (element, errorClass, validClass) {
        return false;  // ensure this function stops
    },
    // other options
});

答案 1 :(得分:4)

您可以使用突出显示回调来覆盖默认行为。

$(".selector").validate({
    highlight: function(element, errorClass) {
        // Override the default behavior here
    }
});

答案 2 :(得分:1)

  

“...但是类错误也会应用于输入框。有没有办法避免将该类分配给框?”

$('#formId').validate({
        errorElement: 'span',
        errorClass: 'errorMessage',
        errorPlacement: function (error, element) {
            error.insertAfter(element);
        },
        highlight: function (element, errorClass, validClass) {
            $(element).removeClass(errorClass);
        },
        ...
});