Reputation: 77
I'm working on a client validation in my ASP.NET MVC 4 application. I'm trying to override default validation summary from unobtrusive jquery validation. There's a method "OnErrors", which I need to override. I found a solution, but for me it works only with single errors. Here is the code:
$(function () {
var settings = $.data($('form')[0], 'validator').settings;
var oldErrorFunction = settings.errorPlacement;
var oldErrorsFunction = settings.invalidHandler;
var oldSucessFunction = settings.success;
settings.invalidHandler = function (form, validator) {
alert("Form is invalid");
oldErrorsFunction(form, validator);
}
settings.errorPlacement = function (error, inputElement) {
$(".validation-summary-errors").append("single error ");
var errorsNumber = 0;
$(".validation-summary-errors li").each(function () {
errorsNumber++;
});
oldErrorFunction(error, inputElement);
}
settings.success = function (error) {
oldSucessFunction(error);
}
});
errorPlacement (for every single error) works well , but invalidHandler (for all errors at once) never fires.
How would you handle this? Thanks
Upvotes: 2
Views: 1196
Reputation: 14229
We have this working for us:
form.unbind("invalid-form.validate", form.validate().settings.invalidHandler); // Unbind the existing invalidHandler
form.validate().settings.invalidHandler = $.proxy(customValidationSummary, form); // Replace invalidHandler with a custom one
form.bind("invalid-form.validate", form.validate().settings.invalidHandler); // Rebind the new invalidHandler
Upvotes: 3