Wtyczka sprawdzania poprawności sprawdza tylko bieżący/skupiony element.W związku z tym do walidatora należy dodać niestandardową regułę, aby sprawdzić wszystkie pola wyboru. Podobnie jak w powyższej odpowiedzi.
$.validator.addMethod("roles", function(value, elem, param) {
if($(".roles:checkbox:checked").length > 0){
return true;
}else {
return false;
}
},"You must select at least one!");
A na elemencie:
<input class='{roles: true}' name='roles' type='checkbox' value='1' />
Ponadto, będzie prawdopodobnie znaleźć wyświetlanie komunikatu o błędzie, nie dość wystarczające. Tylko 1 pole wyboru jest podświetlone i wyświetlany jest tylko 1 komunikat. Jeśli klikniesz inne osobne pole wyboru, które następnie zwróci poprawne dla drugiego pola wyboru, oryginalna nadal będzie oznaczona jako niepoprawna, a komunikat o błędzie będzie nadal wyświetlany, mimo że formularz jest ważny. Zawsze próbowałem tylko wyświetlać i ukrywać błędy w tym przypadku. Weryfikator dba tylko o to, aby nie przesłać formularza.
Inną opcją jest napisanie funkcji, która zmieni wartość ukrytego wejścia, aby było "prawidłowe" po kliknięciu pola wyboru, a następnie dołączenie reguły sprawdzania poprawności do ukrytego elementu. Będzie to jednak sprawdzane tylko w zdarzeniu onSubmit, ale będzie wyświetlało i ukrywało wiadomości o odpowiedniej porze. Są to jedyne opcje, których można używać z wtyczką sprawdzania poprawności.
Nadzieję, że pomaga!
Ta odpowiedź musi być nieaktualna lub coś w tym stylu. Możesz po prostu użyć reguły 'required', o ile wszystkie pola wyboru w grupie mają tę samą' nazwę'. Zobacz [prawdziwa poprawna odpowiedź] (http://stackoverflow.com/a/4120320/594235) i to demo: http://jsfiddle.net/AsuyC/ – Sparky
Sparky - Dzięki za wskazanie we właściwym kierunku. – Nanu
Co słychać w tej klasie? '{role: true}' nie ma żadnego znaczenia dla klasy ... – bradlis7