2012-08-29 12 views
11

Przez pewien generator formularzy lista elementów jest renderowana na stronie i wszystkie mają na nich sprawdzanie poprawności. Kiedy patrzę w kodzie HTML, widzę coś takiego:Wyłącz sprawdzanie poprawności dla elementu z jQuery Unforretive Validation

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

trzeba jakoś mieć dynamiczny sposób, aby włączyć/wyłączyć sprawdzanie poprawności takiego elementu. Próbowałem włączyć/wyłączyć atrybut data-val, ustawiając go na false, a następnie z powrotem na true. Ale wydaje się, że nie reaguje na to. Sprawdzanie jest zawsze tam!

Ktoś ma pojęcie, w jaki sposób mogę dynamicznie włączać/wyłączać sprawdzanie poprawności na niektórych polach?

Odpowiedz

37

I rzeczywiście znalazł rozwiązanie, które pasuje do moich potrzeb lepiej. Mogę wykonać następujące czynności:

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

A z tym mogę „przełącznik” każdy element, który chcę, dodając lub usuwając classname ignore od elementu.

+1

Naprawdę ładne rozwiązanie! :) –

+7

Zauważ, że aby zachować domyślne zachowanie walidacji jquery powinieneś umieścić 'settings.ignore =": hidden, .ignore "' Osobiście wolę dodać ': disabled' również –

+1

Źródło: http://weblogs.asp.net /imranbaloch/archive/2011/07/13/overriding-unobtrusive-client-side-validation-settings-in-asp-net-mvc-3.aspx – WolfyUK

13

Myślę, że to pomoże.

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

To powinna być zaakceptowana odpowiedź! 2 lata nowsza od drugiej – JavierIEH

+0

@JavierIEH Ta odpowiedź może być nowsza i mogła działać dla ciebie, ale działa tylko przy renderowaniu strony. Każdy, kto chce włączyć/wyłączyć sprawdzanie poprawności w locie po stronie klienta, nadal będzie musiał użyć wcześniejszej odpowiedzi. – mikeschuld

+0

Cóż, odpowiedź może się różnić w zależności od problemu, który ma użytkownik –

Powiązane problemy