Próbuję sprawdzić poprawność elementu HTML Select za pomocą wtyczki jQuery Validate. Ustawiłem regułę „required” na true, ale zawsze przechodzi ona walidację, ponieważ domyślnie wybrany jest indeks zerowy. Czy istnieje sposób zdefiniowania pustej wartości używanej przez wymaganą regułę?
UPD. Przykład. Wyobraź sobie, że mamy następującą kontrolkę HTML:
<select>
<option value="default">Choose...</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
Chcę, aby wtyczka Validation używała wartości „default” jako pustej.
jquery
jquery-validate
SiberianGuy
źródło
źródło
Odpowiedzi:
Możesz napisać własną zasadę!
źródło
$.validator.addMethod("valueNotEquals", function(value, element, arg){ return return arg != jQuery(element).find('option:selected').text(); }, "Value must not equal arg.");
Tutaj przedstawiono prostsze rozwiązanie: Zatwierdź pole wyboru
Ustaw wartość jako pustą i dodaj wymagany atrybut
źródło
po prostu ustaw wartość pierwszej opcji na pusty łańcuch
value=""
i reguła walidacji jQuery
required
will work
źródło
użyj reguły min
ustaw wartość pierwszej opcji na 0
źródło
Musisz tylko umieścić
validate[required]
jako klasę tego wyboru, a następnie wstawić opcję z wartością = ""na przykład:
źródło
Nie wiem, jak wyglądała wtyczka w momencie zadawania pytania (2010), ale dziś stanąłem przed tym samym problemem i rozwiązałem go w ten sposób:
Nadaj wybranemu znacznikowi atrybut nazwy. Na przykład w tym przypadku
<select name="myselect">
Zamiast pracować z atrybutem value = "default" w opcji tagu, wyłącz opcję domyślną lub ustaw wartość = "" zgodnie z sugestią Andrew Coatsa
<option disabled="disabled">Choose...</option>
lub
<option value="">Choose...</option>
Ustaw regułę sprawdzania poprawności wtyczki
$( "#YOUR_FORM_ID" ).validate({ rules: { myselect: { required: true } } });
lub
<select name="myselect" class="required">
Obs: Rozwiązanie Andrew Coatsa działa tylko wtedy, gdy masz tylko jedną opcję w formularzu. Jeśli chcesz, aby jego rozwiązanie działało z więcej niż jednym wyborem, dodaj atrybut nazwy do wybranego.
Mam nadzieję, że to pomoże! :)
źródło
required
atrybut do<select>
tagu i dodajdisabled
atrybut do pierwszego<option>
tagu (lub tego zselected
atrybutem, jeśli taki istnieje)Oto prosty i zrozumiały przykład:
JQuery:
źródło
wybrana wartość będzie pusta
źródło
To proste, musisz pobrać wartość pola Select i nie może być ona „domyślna”.
źródło
Rozwiązanie wspomniane przez @JMP zadziałało w moim przypadku z niewielką modyfikacją: używam
element.value
zamiastvalue
waddmethod
.Możliwe, że mam tutaj specjalny przypadek, ale nie znalazłem przyczyny. Ale rozwiązanie @ JMP powinno działać w zwykłych przypadkach.
źródło
jak potwierdzić wybór "qualifica", ma 3 wybory
źródło