在那里我有正在验证一个隐藏的元素,我添加了一个自定义属性,data-val-visibleid
。然后,在jquery.validate.js
,我通过在这两个功能的末尾添加以下修改highlight
和unhighlight
功能:
if ($(element).is(":hidden")) {
var targetId = $(element).attr("data-val-visibleid");
$("#" + targetId).addClass(errorClass).removeClass(validClass);
}
有些人不喜欢jquery.validate.js染指,但它通常是最容易的方法来实现这样的自定义。
UPDATE
我做了一些研究,并发现jquery.validate有一个漂亮的setDefault
方法,在这里你可以覆盖默认的功能,如高亮()和unhighlight。在加载其他脚本后,将以下内容添加到您的页面:
$.validator.setDefaults({
highlight: function (element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
if ($(element).is(":hidden")) {
var targetId = $(element).attr("data-val-visibleid");
$("#" + targetId).addClass(errorClass).removeClass(validClass);
}
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
if ($(element).is(":hidden")) {
var targetId = $(element).attr("data-val-visibleid");
$("#" + targetId).addClass(errorClass).removeClass(validClass);
}
}
});
这将覆盖默认功能,而不更改基础脚本。
在我的最后一个项目,我们不可能更新的jQuery或jQuery UI的,因为有些人都已经对这些文件的太多的变化,所以我支持那些不喜欢在API文件改变..我是希望有一个更清洁的解决方案 – Anders
安德斯,我从来没有感到太高兴了修改核心jquery.validate文件,所以我进一步检查,发现它有一个'setDefault'功能,这样你就可以有一个包含外部脚本您的自定义覆盖。 – counsellorben
酷,这就是我正在寻找! – Anders