当我通过调用$ .validator setDefaults方法为jQuery Validation插件设置一些默认值时,errorPlacement方法运行正常,尽管invalidHandler函数完全被忽略了?为什么呢?
请注意,我在此实例中使用jQuery UI选项卡,并使用.valid()调用验证选项卡的各个字段(在表单中),而不是完整的.validate()调用。
非常感谢任何见解。
以下简化代码:
(function( $ ) {
//det up some site wide validator defaults
$.validator.setDefaults({
invalidHandler: function(error, validator) {
console.log("InvalidHandler Test");
},
errorPlacement: function(error, element) {
error.appendTo("#error_validation span#errorSummary");
$("#error_validation").show();
}
});
//small jQuery plugin for error handling in a jQuery UI tab
//by http://bit.ly/bhH1n1
$.fn.validateTab = function () {
var isValid = true;
$(this).find("input, select").each(function () {
if (isValid) {
isValid = $(this).valid();
} else {
$(this).valid();
}
});
return false;
};
$('#tabs').tabs();
$('#addUserBtn').click(function (e) {
e.preventDefault();
$("#addUser").validateTab();
});
});
答案 0 :(得分:2)
我不确定为什么它不起作用但我需要它所以我自己修复它,如果你想将插件中的setDefaults替换为此
setDefaults: function (settings) {
var validator = $.data($("form")[0], "validator");
var originalSettings = jQuery.validator.getDefaults();
for (var key in settings) {
if (settings[key]) {
originalSettings[key] = settings[key];
}
}
validator.settings = $.extend(true, {}, $.validator.defaults, originalSettings);
},
getDefaults: function () {
var validator = $.data($("form")[0], "validator");
return validator.settings;
},