2012-05-29 13 views
5

Produkt, nad którym pracuję wykorzystuje walidację JQuery z MVC3 działającym za kulisami. Mam pole, które przełączam jako tylko do odczytu (w zależności od tego, czy wartość rozwijana ma wartość> 0), czy nie.Jak wyłączyć sprawdzanie jquery w polach tylko do odczytu?

Sztuką jest, że to pole musi być wymagane, gdy nie jest przeznaczone tylko do odczytu, i musi przesłać bez błędów, gdy jest tylko do odczytu, niezależnie od tego, czy ma dane.

Jak mam to zrobić?

Odpowiedz

14
$.validator.setDefaults({ 
    ignore: ':hidden, [readonly=readonly]' 
}); 

Wartość domyślna parametru ignore jest ":hidden". Poprzez zresetowanie wartości domyślnej za pomocą powyższego kodu, upewniasz się, że sprawdzanie poprawności jquery nadal nie działa na ukrytych elementach formularza, ale nie działa również na elementach, które mają atrybut readonly="readonly".

odpowiadać na komentarze

To brzmi dziwnie, może trzeba pisać kodu, aby uzyskać więcej pomocy. Jedną z rzeczy, można spróbować usunąć błędy sprawdzania poprawności jest ręcznie zweryfikować formę kiedy przełączyć readonly atrybut, coś takiego może:

$('#the_text_box').attr('readonly', 'readonly'); 
$.validator.setDefaults(':hidden'); 
$('form').valid(); 
$.validator.setDefaults(':hidden, [readonly=readonly]'); 

Można też zrobić coś podobnego podczas wstępnego ładowania strony, aby uniknąć chwili komunikaty o błędach sprawdzania poprawności.

$.validator.setDefaults(':hidden, [readonly=readonly]'); 
$('form').valid(); 
+0

Dziękuję, wygląda na to, że robi się tak, że po sprawdzeniu poprawności strony klienta nie można odrzucić strony. W tym samym czasie, gdy ładuję stronę po raz pierwszy, weryfikatory natychmiast wyświetlają komunikaty, że są nieprawidłowe dla wszystkich pustych pól tylko do odczytu. Poza tym nie wydaje się, aby usunąć nieprawidłowe ustawienia, gdy zmienię pole na readonly za pomocą JavaScript. Czy brakuje mi czegoś, czy jest to tylko coś, co jest związane z implementacją mojego produktu? – Brisbe42

+0

Wystarczy wyjaśnić, co się stało, to zadziałało dla mnie - do pewnego stopnia. Mój kod zawierał pewne ukryte funkcje, które powodowały, że strona zaczynała się od błędów sprawdzania poprawności już zastosowanych po stronie serwera. Skończyło się na tym, że musiałem pójść z rozwiązaniem, które miało na nie wpływ. Funkcja .valid() na elementach, w połączeniu z odwracaniem flagi readonly, działała dla sprawdzania poprawności po stronie klienta. Dzięki za pomoc! – Brisbe42