我想覆盖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正在问完全相同的事情,但答案不起作用。原始函数没有被传入。也许代码已被更改?
答案 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插件的用户可配置选项的工作方式......它们覆盖/替换内置默认值。)
只需将插件中的原始代码复制到自定义回调函数中,然后根据需要进行修改。