W przypadku korzystania z nowszych przeglądarek obsługujących HTML5 (na przykład FireFox 4);
a pole formularza ma atrybut required='required'
;
a pole formularza jest puste / puste;
i kliknięto przycisk przesyłania;
przeglądarka wykryje, że „wymagane” pole jest puste i nie wysyła formularza;
zamiast tego przeglądarka wyświetla podpowiedź z prośbą o wpisanie tekstu w polu.
Teraz zamiast jednego pola tekstowego mam grupę checkboxów , z których przynajmniej jedno powinno być zaznaczone / wybrane przez użytkownika.
Jak mogę użyć required
atrybutu HTML5 w tej grupie pól wyboru? (Ponieważ tylko jedno pole wyboru musi być zaznaczone, nie mogę umieścić required
atrybutu w każdym polu wyboru)
ps. Używam simple_form , jeśli to ma znaczenie.
AKTUALIZACJA
Czy atrybut HTML 5multiple
mógłby być tutaj pomocny? Czy ktoś użył go wcześniej do zrobienia czegoś podobnego do mojego pytania?
AKTUALIZACJA
To wydaje się , że ta funkcja nie jest obsługiwana przez specyfikację HTML5: PROBLEM-111: Co robi wejście @ wymagana średnia dla @type = checkbox.?
(Status sprawy : sprawa została oznaczona jako zamknięta bez uprzedzeń ) . A oto wyjaśnienie .
AKTUALIZACJA 2
To stare pytanie, ale chciałem wyjaśnić, że pierwotnym zamiarem pytania była możliwość zrobienia tego bez użycia Javascript - tj. Przy użyciu metody HTML5. Z perspektywy czasu powinienem był bardziej oczywisty uczynić „bez Javascript”.
źródło
Odpowiedzi:
Niestety HTML5 nie zapewnia tego standardowego sposobu.
Jednak za pomocą jQuery możesz łatwo kontrolować, czy grupa pól wyboru ma co najmniej jeden zaznaczony element.
Rozważ następujący fragment DOM:
Możesz użyć tego wyrażenia:
która zwraca,
true
jeśli przynajmniej jeden element jest zaznaczony. Na tej podstawie możesz zaimplementować sprawdzanie poprawności.źródło
To prosta sztuczka. To jest kod jQuery, który może wykorzystać walidację HTML5, zmieniając
required
właściwości, jeśli któraś jest zaznaczona. Poniżej znajduje się Twój kod HTML (upewnij się, że dodajesz wymagane dla wszystkich elementów w grupie).Poniżej znajduje się skrypt jQuery, który wyłącza dalsze sprawdzanie poprawności, jeśli którykolwiek jest wybrany. Wybierz używając elementu nazwy.
Mały problem: Ponieważ używasz walidacji HTML5, upewnij się, że wykonałeś ją przed walidacją, tj. Przed przesłaniem formularza.
źródło
Wydaje mi się, że nie ma standardowego sposobu na HTML5, aby to zrobić, ale jeśli nie masz nic przeciwko użyciu biblioteki jQuery, udało mi się uzyskać walidację „ grupy pól wyboru” przy użyciu grupy „ wymagane przez webshim ” funkcji walidacji :
Dokumenty wymagane przez grupę mówią:
A oto przykład, jak byś tego użył:
Przeważnie używam webshims do wypełniania funkcji HTML5, ale ma też kilka świetnych opcjonalnych rozszerzeń, takich jak to.
Pozwala nawet na pisanie własnych niestandardowych reguł ważności. Na przykład musiałem utworzyć grupę pól wyboru, która nie byłaby oparta na nazwie wejścia, więc napisałem własną regułę ważności dla tego ...
źródło
HTML5 nie obsługuje bezpośrednio wymagania, aby tylko jedno / co najmniej jedno pole wyboru było zaznaczone w grupie pól wyboru. Oto moje rozwiązanie wykorzystujące Javascript:
HTML
JAVASCRIPT
JavaScript zapewni zaznaczenie co najmniej jednego pola wyboru, a następnie wyłączy całą grupę pól wyboru. Jeśli jedno zaznaczone pole wyboru zostanie odznaczone, będzie wymagać wszystkich pól wyboru ponownie!
źródło
Miałem ten sam problem i moje rozwiązanie było takie:
HTML:
JS:
https://jsfiddle.net/oywLo5z4/
źródło
Zainspirowany odpowiedziami @thegauraw i @Brian Woodward, oto fragment, który zebrałem dla użytkowników JQuery, w tym niestandardowy komunikat o błędzie walidacji:
Zauważ, że mój formularz ma domyślnie zaznaczone pola wyboru.
Może niektórzy z was kreatorów JavaScript / JQuery mogliby to jeszcze bardziej zaostrzyć?
źródło
możemy to łatwo zrobić również z html5, wystarczy dodać trochę kodu jquery
Próbny
HTML
Jquery
źródło
Dodałem niewidzialne radio do grupy pól wyboru. Gdy przynajmniej jedna opcja jest zaznaczona, radio jest również ustawione na sprawdzanie. Gdy wszystkie opcje są anulowane, radio jest również ustawione na anulowanie. Dlatego w formularzu jest używany komunikat radiowy „Zaznacz przynajmniej jedną opcję”
display: none
ponieważ radio nie może być skupione.HTML
Javascript
CSS
https://jsfiddle.net/codus/q6ngpjyc/9/
źródło
radio
'sopacity
na 0 i ustawićopacity
na 1 po przesłaniu, abyśmy mogli kontrolować, czy pojawia się czerwony kontur, czy nie.visibility: hidden
lubdisplay: none
po prostu, aby uniknąć trochę zabrudzenia użyteczności. Ponieważ czytniki ekranu i inne narzędzia ułatwień dostępu prawdopodobnie znajdą ukryty przycisk opcji.Cześć, po prostu użyj dodatkowego pola tekstowego do grupy pól wyboru. Po kliknięciu dowolnego pola wyboru umieść wartości w tym polu tekstowym. Upewnij się, że to pole tekstowe jest wymagane i tylko do odczytu.
źródło
Zdaję sobie sprawę, że jest tu mnóstwo rozwiązań, ale żadne z nich nie spełniało wszystkich moich wymagań:
name
do przesyłania zgłoszeń na Github za pośrednictwem ich interfejsu API, i używałem nazwylabel[]
do przypisywania etykiet w wielu polach formularza (dwie listy pól wyboru oraz kilka pól wyboru i pól tekstowych) - przyznano, że mogłem to osiągnąć bez ich udostępniania ta sama nazwa, ale zdecydowałem się spróbować i zadziałało.Jedynym wymaganiem dla tego jest jQuery. Możesz połączyć to z doskonałym rozwiązaniem @ ewall, aby dodać niestandardowe komunikaty o błędach walidacji.
źródło
Oto kolejna prosta sztuczka z użyciem Jquery !!
HTML
JQuery
To wszystko ... to działa, ponieważ jeśli żadne pole wyboru nie jest zaznaczone, nic o grupie checkboxów (łącznie z jej nazwą) nie jest wysyłane na serwer
źródło
Próbować:
lub
Dokładniej:
Kiedy czytasz dane z tablicy checkbox, upewnij się, że tablica ma:
W tym przypadku:
źródło