Mam przyciski radiowe w HTML w ten sposób:
<td>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
</td>
Znajduje się w tagu formularza, a gdy użytkownik przesyła formularz, chcę przywrócić domyślne ustawienia wszystkich przycisków opcji. To znaczy, że żaden z nich nie sprawdził.
Mam ten kod, ale wyświetla błąd mówiąc [0] is null or not an object
$('input[@name="correctAnswer"]')[0].checked = false;
$('input[@name="correctAnswer"]')[1].checked = false;
$('input[@name="correctAnswer"]')[2].checked = false;
$('input[@name="correctAnswer"]')[3].checked = false;
Robię to w IE 6.
#(selector).prop('checked',true);
kończy się niepowodzeniem, gdy następuje próba ustawienia kolejnego przycisku opcji w tej samej grupie na stan niezaznaczony. Sztuczka polega na tym, aby ustawić przycisk radiowy w stanie zaznaczonym i pozwolić grupie przycisków radiowych robić to, co robi (odznacz pozostałe ...) . Również dzwonienie$(selector).click();
działa i wyzwala wszelkie zdarzenia towarzyszące.Odpowiedzi:
W wersjach jQuery przed 1.6 użycia:
W wersjach jQuery po 1.6 powinieneś używać:
ale jeśli używasz wersji 1.6.1+, możesz użyć pierwszego formularza (patrz uwaga 2 poniżej).
Uwaga 1: ważne jest, aby drugi argument był fałszywy, a nie „fałsz”, ponieważ „fałsz” nie jest wartością fałszywą. to znaczy
Uwaga 2: W jQuery 1.6.0, istnieją obecnie dwa podobne metody,
.attr
a.prop
które robią dwa podobne, ale nieco różne rzeczy. Jeśli w tym konkretnym przypadku powyższa rada zadziała, jeśli używasz wersji 1.6.1+. Powyższe nie będzie działać z 1.6.0, jeśli używasz 1.6.0, powinieneś zaktualizować. Jeśli chcesz poznać szczegóły, czytaj dalej.Szczegóły: Podczas pracy z prostych elementów HTML DOM, istnieją właściwości związane z elementu DOM (
checked
,type
,value
, etc), które stanowią interfejs do uruchomionego stanu strony HTML. Istnieje również interfejs.getAttribute
/.setAttribute
, który zapewnia dostęp do wartości atrybutów HTML, jak podano w kodzie HTML. Przed wersją 1.6 jQuery zatarło to rozróżnienie, udostępniając jedną metodę.attr
, aby uzyskać dostęp do obu typów wartości. jQuery 1.6+ udostępnia dwie metody.attr
i.prop
umożliwia rozróżnienie między tymi sytuacjami..prop
umożliwia ustawienie właściwości elementu DOM, a jednocześnie.attr
umożliwia ustawienie wartości atrybutu HTML. Jeśli pracujesz ze zwykłym DOM i ustawiasz sprawdzoną właściwośćelem.checked
natrue
lubfalse
zmieniasz bieżącą wartość (co widzi użytkownik), a zwrócona wartość śledzi stan na stronie.elem.getAttribute('checked')
jednak zwraca tylko stan początkowy (i zwraca'checked'
lub wundefined
zależności od stanu początkowego z HTML). W wersji 1.6.1+ używanie.attr('checked', false)
robi jednoelem.removeAttribute('checked')
i drugie, aelem.checked = false
ponieważ zmiana spowodowała wiele problemów ze zgodnością wsteczną i nie jest w stanie stwierdzić, czy chcesz ustawić atrybut HTML, czy właściwość DOM. Zobacz więcej informacji w dokumentacji .prop .źródło
Najlepszy sposób na ustawienie stanu radiobuttons w jQuery:
HTML:
Kod JQuery (1.4+) do wstępnego wyboru jednego przycisku:
W kodzie Jquery 1.6+ preferowana jest metoda .prop ():
Aby odznaczyć przyciski:
źródło
Twój problem polega na tym, że selektor atrybutu nie zaczyna się od
@
.Spróbuj tego:
źródło
źródło
Wreszcie po wielu testach myślę, że najwygodniejszym i najskuteczniejszym sposobem na ustawienie wstępne jest:
Odświeżanie jest wymagane w przypadku obiektu JQueryUI.
Pobieranie wartości jest łatwe:
Testowane z JQuery 1.6.1, JQuery UI 1.8.
źródło
Wiem, że to jest stare i trochę nie na temat, ale przypuśćmy, że chcesz odznaczyć tylko określone przyciski opcji w kolekcji:
A jeśli masz do czynienia z listą radiobutton, możesz użyć selektora: selected, aby uzyskać tylko ten, który chcesz.
źródło
Zestaw przycisków radiowych sprawdzony przez jQuery:
kod jQuery:
źródło
Jeśli chcesz wyczyścić wszystkie przyciski opcji w DOM:
$('input[type=radio]').prop('checked',false);
źródło
źródło
Chociaż prop zmienił stan zaznaczenia, ale zmiana również pokazuje to w formularzu.
źródło
Gdzie masz:
<input type="radio" name="enddate" value="1" />
Po wartości = „1” możesz również po prostu dodać
unchecked =" false" />
Linia będzie wtedy:
źródło
Przywróć domyślne ustawienia wszystkich przycisków opcji:
źródło
Dlaczego nie robisz:
źródło