覆盖jQuery验证highlight / unhighlight方法

时间:2016-05-24 19:26:02

标签: jquery jquery-validate

我想覆盖jQuery验证器中的highlight和unhighlight函数来执行它们通常的操作,并为父元素添加不同的类。

基本上我想要这个:(我需要帮助的地方希望基地..部分)

    jQuery.validator.setDefaults({
         highlight: function(element, errorClass, validClass) {
             base.highlight(element, errorClass, validClass);
             element.parents('div.form-group').addClass('has-error');
          },
         unhighlight: function(element, errorClass, validClass) {
             base.unhighlight(element, errorClass, validClass);
             element.parents('div.form-group').removeClass('has-error');
          },
    });

This question正在问完全相同的事情,但答案不起作用。原始函数没有被传入。也许代码已被更改?

1 个答案:

答案 0 :(得分:1)

highlight: function(element, errorClass, validClass) {  // line 1
    base.highlight(element, errorClass, validClass);    // go to line 1
    ....

您无法在highlight()unhighlight()内拨打highlight()unhighlight()。为什么?因为任何自定义回调函数完全覆盖了插件的内置函数,所以如果你上面提出的逻辑工作,它将无限循环。

  

我想覆盖jQuery验证器中的highlight和unhighlight函数来执行它们通常的操作,并为父元素添加不同的类

只需将within the plugin中默认函数的内容复制到您的内容中,然后根据需要进行修改。

jQuery.validator.setDefaults({
    highlight: function(element, errorClass, validClass) {
        // default function
        if (element.type === "radio") {
            this.findByName(element.name).addClass(errorClass).removeClass(validClass);
        } else {
            $(element).addClass(errorClass).removeClass(validClass);
        }
        // custom additions
        element.parents('div.form-group').addClass('has-error');
    },
    unhighlight: function(element, errorClass, validClass) {
        // default function
        if (element.type === "radio") {
            this.findByName(element.name).removeClass(errorClass).addClass(validClass);
        } else {
            $(element).removeClass(errorClass).addClass(validClass);
        }
        // custom additions
        element.parents('div.form-group').removeClass('has-error');
    },
});
  

原始函数未被传入。或许代码已被更改?

我不知道他们在想什么,或者他们的解决方案是否有效。当您为jQuery Validate插件使用自定义回调函数时,它们完全覆盖了插件中内置的默认函数。 (这是jQuery插件的用户可配置选项的工作方式......它们覆盖/替换内置默认值。)

只需将插件中的原始代码复制到自定义回调函数中,然后根据需要进行修改。