Вот кое-что, что я только что взломал, который оборачивает оригинальные функции parseElement
и invalidHandler
, позволяя вам добавить свою собственную логику.
(function($) {
$.validator.unobtrusive.parseElement = (function (original) {
return function (element, skipAttach) {
original.call(this, element, skipAttach);
var form = $(element).parents("form:first")[0];
var validationInfo = $(form).data('unobtrusiveValidation');
if (validationInfo) {
var handler = validationInfo.options.invalidHandler;
var newhandler = function () {
console.log('Here is where you can do additional handling');
handler.call(this);
};
validationInfo.options.invalidHandler = $.proxy(newhandler, form);
} else {
// this didn't work.
}
}
})($.validator.unobtrusive.parseElement);
})(jQuery);
Обратите внимание, что это непосредственная функция, а не функция jQuery, которая эквивалентна document.onload.
Это , заменяющий $.validator.unobtrusive.parseElement
новой функцией, которая вызывает оригинал, чтобы гарантировать, что validationInfo.options.invalidHandler
применяется к родительской форме, которая затем позволяет вам обернуть этот обработчик newhandler
функция.
Изменить:
Приведенный выше ответ будет работать только для MVC3 и ненавязчивой проверки.
Для выполнения некоторых дополнительных функций с $.validator
, когда форма недействительна ...
$('form:first').bind("invalid-form.validate", function () {
alert("invalid!");
});