如何在不修改JQuery.validate.unobtrusive.min.js的情况下重写JQuery unobtrusive方法?
我想覆盖jquery.validate.unobtrusive.js中的onErrors方法,将错误消息显示为指向html元素的超链接。但是,我不想更改jquery.validate.unobtrusive.js中的方法,因为该文件会随着新版本的可用而更新。我已经读到,我可以创建一个外部JS文件,并在其中包含onErrors函数。在我的html文件中,如果在包含jquery.validate.unobtrusive.JS之后包含外部JS文件,那么它应该自动覆盖jquery.validate.unobtrusive.JS中的方法。这并没有发生 请注意,我使用jquery.validate.unobtrusive.min.js,函数从onErrors重命名为k。我尝试在我的外部JS文件中创建一个名为“k”的函数,但没有成功如何在不修改JQuery.validate.unobtrusive.min.js的情况下重写JQuery unobtrusive方法?,jquery,validation,overriding,Jquery,Validation,Overriding,我想覆盖jquery.validate.unobtrusive.js中的onErrors方法,将错误消息显示为指向html元素的超链接。但是,我不想更改jquery.validate.unobtrusive.js中的方法,因为该文件会随着新版本的可用而更新。我已经读到,我可以创建一个外部JS文件,并在其中包含onErrors函数。在我的html文件中,如果在包含jquery.validate.unobtrusive.JS之后包含外部JS文件,那么它应该自动覆盖jquery.validate.un
谢谢 当两个函数都放置在全局命名空间中时,可能会发生重写。对于jquery.validation.unobtrusive.js函数,onErrors在其他函数内部声明,不能通过使用相同名称声明其他函数来替换 如果不更改源代码,似乎无法更改该函数。 您可以通过提供不同的选项来更改默认OneErrors,因为它是可重写的。
无需更改源代码或重写内置函数。无需修改原始jquery.validate.unobtrusive.js。答案是这样的: 但是您必须小心:如果您只是在实现中更改errorPlacement,那么即使出现错误,表单也可能会提交。为了避免这种情况,您需要保留jquery.validate.unobtrusive.js的onError函数的内容 将此代码放在您的一个文件中:
var $form = $("form.edit-form")
var validator = $form.data('validator');
validator.settings.errorPlacement = $.proxy(onError, $form);
function onError(error, inputElement) {
//Original code of the onError function inside jquery.validate.unobtrusive
//------------------------------------------------------------------------
var container = $(this).find("[data-valmsg-for='" + inputElement[0].name + "']"),
replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;
container.removeClass("field-validation-valid").addClass("field-validation-error");
error.data("unobtrusiveContainer", container);
if (replace) {
container.empty();
error.removeClass("input-validation-error");
}
else {
error.hide();
}
//END of Original code of the onError function inside jquery.validate.unobtrusive
//-------------------------------------------------------------------------------
//Do whatever you want here, in my case I'm using qTip to show the errors
var element = inputElement;
// Set positioning based on the elements position in the form
var elem = $(element);
// Check we have a valid error message
if (!error.is(':empty')) {
// Apply the tooltip only if it isn't valid
elem.filter(':not(.valid)').qtip({
overwrite: false,
content: error,
position: {
my: 'left middle',
at: 'right middle',
viewport: $(window)
},
show: {
event: false,
ready: true
},
hide: false,
style: {
classes: 'ui-tooltip-red' // Make it red... the classic error colour!
}
})
// If we have a tooltip on this element already, just update its content
.qtip('option', 'content.text', error);
}
// If the error is empty, remove the qTip
else { elem.qtip('destroy'); }
}
你能把链接贴到你可能读到的地方吗?我看过缩小的文件,认为你很难做到这一点。是的,发布一些代码,让我们知道你尝试了什么。