La validación predeterminada en MVC 3 se basa en jQuery Validation , que normalmente puedo personalizar con algo como:
$.validator.setDefaults({ submitHandler: function() { alert('submitHandler'); }, errorPlacement: function(error, element) { // do something important here alert('errorPlacement'); }, errorClass: "error", errorElement: "input", onkeyup: false, onclick: false })Pero, eso no parece funcionar en MVC 3. Específicamente, errorPlacement nunca parece llamarse y no tengo idea de por qué. Haré que se llame a submitHandler, pero nunca errorPlacement.
¿Cómo puedo personalizar la validación para que coincida con la estructura/estilo que necesito para el estilo de mi sitio? El valor predeterminado es excelente, pero no siempre funciona en todas las situaciones.
En mi código, en lugar de usar $.validator.setDefaults , accedo al validador de formulario usando $("#form_selector").data('validator') y luego cambio la configuración.
$(function () { var validator = $("#form_selector").data('validator'); validator.settings.errorPlacement = function(error,element) { alert('errorPlacement'); }; });Ve si funciona para ti.
Tuve el mismo problema, pero me di cuenta de que el complemento discreto en realidad estaba causando el problema, ¡anulará cualquier opción que establezca! El truco es tener su código escrito/incluido en el siguiente orden:
¡Cualquier otro pedido y esto no se configurará correctamente!
Manera correcta de hacer esto:
Orden del guión:
Código personalizado y secuencia de comandos de opciones:
var settings = { //... }; // override jQuery unobtrusive validator settings $.validator.unobtrusive.options = settings;