2012-08-29 22 views
11

Por algún generador de formulario se representa una lista de elementos en una página y todos tienen validaciones sobre ellos. Cuando miro en el código HTML, lo que veo algo como esto:Inhabilitar la validación de un elemento con jQuery Unobtrusive Validation

<input type="text" id="email" name="email" data-val-required="No valid email address!" data-val="true"> 

Es necesario disponer de alguna manera una forma dinámica para activar/desactivar la validación de dicho elemento. Intenté habilitar/deshabilitar el atributo data-val, configurándolo en false y luego de vuelta a true. Pero no parece estar respondiendo a eso. La validación está siempre ahí!

¿Alguien tiene alguna idea de cómo puedo activar/desactivar validaciones en ciertos campos de una manera dinámica?

Respuesta

37

realidad he encontrado una solución que se adapte mejor a mis necesidades. Puedo hacer lo siguiente:

$(function() { 
    var settngs = $.data($('form')[0], 'validator').settings; 
    settngs.ignore = ".ignore"; 
}); 

Y con que puedo 'alternar' cualquier elemento que quiero añadiendo o eliminando el nombre de clase ignore de un elemento.

+1

¡Muy buena solución! :) –

+7

tenga en cuenta que para mantener el comportamiento de validación de jquery predeterminado debe poner 'settings.ignore =": hidden, .ignore "' Personalmente prefiero agregar ': disabled' también –

+1

Fuente: http://weblogs.asp.net /imranbaloch/archive/2011/07/13/overriding-unobtrusive-client-side-validation-settings-in-asp-net-mvc-3.aspx – WolfyUK

13

Creo que esto ayudará.

<div class="editor-field"> 
     @{ Html.EnableClientValidation(false); } 
     @Html.TextBoxFor(m => m.BatchId, new { @class = "k-textbox" }) 
     @{ Html.EnableClientValidation(true); } 
</div> 
+1

¡Esta debería ser la respuesta aceptada! 2 años más reciente que el otro – JavierIEH

+0

@JavierIEH Esta respuesta puede ser más reciente, y puede haber funcionado para usted, pero solo funciona en el momento de renderizar la página. Cualquiera que quiera habilitar/deshabilitar los validadores en el lado del cliente volar aún necesitará usar la respuesta anterior. – mikeschuld

+0

La respuesta correcta puede variar según el problema que tenga el usuario –

Cuestiones relacionadas