Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I customize the unobtrusive validation in ASP.NET MVC 3 to match my style?

The default validation in MVC 3 is based on jQuery Validation, which I can usually customize with something like:

$.validator.setDefaults({   submitHandler: function() { alert('submitHandler'); },   errorPlacement: function(error, element) {     // do something important here     alert('errorPlacement');   },   errorClass: "error",   errorElement: "input",   onkeyup: false,   onclick: false }) 

But, that doesn't seem to work in MVC 3. Specifically, errorPlacement doesn't ever seem to be called and I've no idea why. I'll get the submitHandler called, but never errorPlacement.

How can I customize the validation to match whatever structure/style that I require for my site's style? The default is great, but it doesn't always work in every situation.

like image 878
Kori Avatar asked Mar 30 '11 13:03

Kori


People also ask

What is unobtrusive validation in ASP.NET MVC?

Unobtrusive Validation allows us to take the already-existing validation attributes and use them client-side to make our user experience that much nicer. The Unobtrusive script files are included automatically with new MVC projects in Visual Studio, but if you don't have them you can get them from NuGet.

What is unobtrusive validation in asp net?

Unobtrusive validation makes use of jQuery library and data-* attributes of HTML5 to validate data entered in the web form controls. Unobtrusive validations can be enabled in the web. config file, Global. asax or individual Web Form code-behind.

What is validator unobtrusive parse?

validator. unobtrusive. parse(selector) method to force parsing. This method parses all the HTML elements in the specified selector and looks for input elements decorated with the [data-val=true] attribute value and enables validation according to the data-val-* attribute values.


1 Answers

In my code instead of using $.validator.setDefaults I access the form validator using $("#form_selector").data('validator') and then change the settings.

$(function () {      var validator = $("#form_selector").data('validator');     validator.settings.errorPlacement = function(error,element) {         alert('errorPlacement');     };  }); 

See if it works for you.

like image 148
Felipe Leusin Avatar answered Oct 05 '22 05:10

Felipe Leusin