2012-08-29 18 views
11

Con un qualche generatore di moduli viene visualizzato un elenco di elementi in una pagina e tutti hanno una convalida su di essi. Quando guardo nel codice HTML, vedo qualcosa di simile:Disabilita la convalida di un elemento con jQuery Convalida non invadente

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

ho bisogno di avere in qualche modo un modo dinamico per abilitare/disabilitare la convalida di tale elemento. Ho provato ad abilitare/disabilitare l'attributo data-val, impostandolo su false e quindi su true. Ma non sembra rispondere a questo. La convalida è sempre lì!

Qualcuno ha idea di come abilitare/disabilitare validazioni su determinati campi in modo dinamico?

risposta

37

in realtà ho trovato una soluzione che si adatta alle mie esigenze meglio. Posso fare quanto segue:

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

E con che posso 'ginocchiera' alcun elemento che voglio aggiungendo o rimuovendo il nome di classe ignore da un elemento.

+1

Soluzione davvero bella! :) –

+7

nota che per mantenere il comportamento di validazione jquery predefinito dovresti inserire 'settings.ignore =": hidden, .ignore "' Personalmente preferisco aggiungere ': disabled' anche a –

+1

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

13

Penso che questo aiuterà.

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

Questa dovrebbe essere la risposta accettata! 2 anni più recenti rispetto agli altri – JavierIEH

+0

@JavierIEH Questa risposta potrebbe essere più recente e potrebbe aver funzionato per te, ma funziona solo a tempo di rendering della pagina. Chiunque voglia abilitare/disabilitare il lato client dei validatori dovrà comunque utilizzare la risposta precedente. – mikeschuld

+0

La risposta può variare a seconda del problema che l'utente ha –

Problemi correlati