Ich habe Optionsfelder in HTML wie folgt:
<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>
Dies befindet sich in einem Formular-Tag. Wenn der Benutzer ein Formular sendet, möchte ich alle Optionsfelder auf den Standardwert zurücksetzen. Das heißt, keiner von ihnen wurde überprüft.
Ich habe diesen Code, aber er gibt einen Fehler aus [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;
Ich mache das in IE 6.
#(selector).prop('checked',true);
schlägt dies fehl, wenn anschließend versucht wird, ein nachfolgendes Optionsfeld in derselben Gruppe auf einen nicht aktivierten Status zu setzen. Der Trick besteht darin , das Optionsfeld nur in einen aktivierten Zustand zu versetzen und die Optionsfeldgruppe das tun zu lassen, was sie tut (deaktivieren Sie die anderen ...) . Das Aufrufen$(selector).click();
funktioniert auch und löst alle zugehörigen Ereignisse aus.Antworten:
In Versionen von jQuery vor 1.6 verwenden Sie:
In jQuery-Versionen nach 1.6 sollten Sie Folgendes verwenden:
Wenn Sie jedoch 1.6.1+ verwenden, können Sie das erste Formular verwenden (siehe Anmerkung 2 unten).
Anmerkung 1: Es ist wichtig, dass das zweite Argument falsch und nicht "falsch" ist. da "falsch" kein falscher Wert ist. dh
Anmerkung 2: Ab jQuery 1.6.0, gibt es nun zwei ähnliche Verfahren,
.attr
und.prop
das tun zwei verwandte , aber etwas andere Dinge. Wenn in diesem speziellen Fall die oben genannten Hinweise funktionieren, wenn Sie 1.6.1+ verwenden. Das Obige funktioniert nicht mit 1.6.0. Wenn Sie 1.6.0 verwenden, sollten Sie ein Upgrade durchführen. Wenn Sie die Details erfahren möchten, lesen Sie weiter.Details: Wenn mit geraden HTML DOM - Elementen arbeiten, gibt es Objekte, die das DOM - Element angebracht (
checked
,type
,value
, usw.) , die eine Schnittstelle zum Betriebszustand der HTML - Seite zur Verfügung stellen. Es gibt auch die.getAttribute
/.setAttribute
-Schnittstelle, die den Zugriff auf die im HTML bereitgestellten HTML-Attributwerte ermöglicht. Vor 1.6 verwischte jQuery die Unterscheidung, indem eine Methode bereitgestellt wurde.attr
, um auf beide Wertetypen zuzugreifen. jQuery 1.6 + bietet zwei Methoden,.attr
und.prop
zwischen diesen Situationen zu unterscheiden zu bekommen..prop
Mit dieser Option können Sie eine Eigenschaft für ein DOM-Element.attr
festlegen und einen HTML-Attributwert festlegen. Wenn Sie mit einfachen DOM und legen Sie die Eigenschaft checked arbeiten,elem.checked
antrue
oderfalse
Sie den laufenden Wert ändern (was der Benutzer sieht) und die zurückgegebene Wert Spuren , die auf Seite Zustand.elem.getAttribute('checked')
Gibt jedoch nur den Anfangszustand zurück (und gibt'checked'
oderundefined
abhängig vom Anfangszustand aus dem HTML zurück). In 1.6.1+ bewirkt using.attr('checked', false)
beideselem.removeAttribute('checked')
undelem.checked = false
da die Änderung viele Abwärtskompatibilitätsprobleme verursacht hat und nicht wirklich erkennbar ist, ob Sie das HTML-Attribut oder die DOM-Eigenschaft festlegen möchten . Weitere Informationen finden Sie in der Dokumentation zu .prop .quelle
Der beste Weg, um den Status von Radiobuttons in jquery festzulegen:
HTML:
Jquery (1.4+) Code zur Vorauswahl einer Schaltfläche:
In Jquery 1.6+ Code wird die .prop () -Methode bevorzugt:
So heben Sie die Auswahl der Schaltflächen auf:
quelle
Ihr Problem ist, dass die Attributauswahl nicht mit a beginnt
@
.Versuche dies:
quelle
quelle
Nach vielen Tests denke ich, dass die bequemste und effizienteste Art der Voreinstellung Folgendes ist:
Die Aktualisierung ist für das JQueryUI-Objekt erforderlich.
Das Abrufen des Werts ist einfach:
Getestet mit JQuery 1.6.1, JQuery UI 1.8.
quelle
Ich weiß, dass dies alt ist und dass dies ein wenig vom Thema abweicht, aber angenommen, Sie wollten nur bestimmte Optionsfelder in einer Sammlung deaktivieren:
Und wenn Sie es mit einer Radiobutton-Liste zu tun haben, können Sie den Selektor: aktiviert verwenden, um genau die gewünschte zu erhalten.
quelle
Optionsfeldsatz durch jquery überprüft:
Abfragecode:
quelle
Wenn Sie alle Optionsfelder im DOM löschen möchten:
$('input[type=radio]').prop('checked',false);
quelle
quelle
Obwohl prop den geprüften Status geändert hat, zeigen Änderungen dies auch im Formular.
quelle
Wo du hast:
<input type="radio" name="enddate" value="1" />
Nach value = "1" können Sie auch einfach hinzufügen
unchecked =" false" />
Die Zeile lautet dann:
quelle
Setzen Sie alle Optionsfelder auf den Standardwert zurück:
quelle
Warum tust du nicht:
quelle