Ich versuche ein Optionsfeld zu setzen. Ich möchte es mit dem Wert oder der ID einstellen.
Das habe ich versucht.
$('input:radio[name=cols]'+" #"+newcol).attr('checked',true);
newcol
ist die ID des Optionsfelds.
Vielleicht ist eine kleine Bearbeitung angebracht.
Es gibt zwei Sätze von Optionsfeldern, eines mit Spalten und das andere mit Zeilen. Ich sehe den Sinn darin, keine IDs zu verwenden. Mein Fehler. Also ich habe als Beispiel:
<input type="radio" name="rows" class="listOfCols"
style="width: 50%; " value="Site"></input>
und
<input type="radio" name="cols" class="listOfCols"
style="width: 50%; " value="Site"></input>
Wenn die ID entfernt ist, muss ich die richtige einstellen.
jquery
radio-button
mike628
quelle
quelle
Antworten:
Ihr Selektor sucht nach dem Nachkommen eines
input:radio[name=cols]
Elements mit der IDnewcol
(also dem Wert dieser Variablen).Versuchen Sie dies stattdessen (da Sie sowieso nach ID auswählen):
Hier ist eine Demo: http://jsfiddle.net/jasper/n8CdM/1/
Ab jQuery 1.6 lautet die bevorzugte Methode zum Ändern einer Eigenschaft
.prop()
: http://api.jquery.com/propquelle
prop
vsattr
.attr
veraltet für Eigenschaften und funktioniert nicht mehr in jQuery 2.0))Ich habe die Antwort hier gefunden:
https://web.archive.org/web/20160421163524/http://vijayt.com/Post/Set-RadioButton-value-using-jQuery
Wenn Sie ein Optionsfeld aktivieren möchten, MÜSSEN Sie den Wert grundsätzlich als Array übergeben:
quelle
In Ihrer Auswahl scheinen Sie zu versuchen, ein verschachteltes Element Ihres Optionsfelds mit einer bestimmten ID abzurufen. Wenn Sie ein Optionsfeld aktivieren möchten, sollten Sie dieses Optionsfeld in der Auswahl auswählen und nicht etwas anderes:
Dies setzt voraus, dass Sie das folgende Optionsfeld in Ihrem Markup haben:
Wenn Ihr Optionsfeld eine ID hatte:
Sie können direkt einen ID-Selektor verwenden:
quelle
cols
Namen$('input:radio[name="cols"]').attr('checked', 'checked');
gibt, wird nur das letzte ausgewählt. Der Code wird jeweils ausgeführt, aber jedes Mal, wenn Sie diechecked
Eigenschaft festlegen , wird das zuvor festgelegte Element deaktiviert. Hier ist eine Demo: jsfiddle.net/jasper/n8CdM/2Sie können den folgenden Code ausprobieren:
Dadurch wird das Attribut festgelegt, das für die Funkspalten und den angegebenen Wert überprüft wurde.
quelle
...the most important concept to remember about the checked attribute is that it does not correspond to the checked property.
Quelle: api.jquery.com/attrWarum brauchen Sie
'input:radio[name=cols]'
. Sie kennen Ihr HTML nicht, aber unter der Annahme, dass IDs eindeutig sind, können Sie dies einfach tun.quelle
Versuche dies:
Ich hatte Probleme mit
attr("checked", true)
, daher verwende ich stattdessen eher die oben genannten.Wenn Sie die ID haben, brauchen Sie diese anderen Dinge nicht zur Auswahl. Eine ID ist eindeutig.
quelle
checked="checked"
Attribut angezeigt und der Browser zeigt es als aktiviert an. Wählen Sie dann B und das Gleiche passiert. Wenn Sie nun erneut A auswählen, hat es bereits einchecked="checked"
Attribut und nichts ändert sich. Als Nebeneffekt wird B weiterhin ausgewählt, nicht A.Da
newcol
es sich um die ID des Optionsfelds handelt, können Sie es einfach wie folgt verwenden.quelle
Die Verwendung
.filter()
funktioniert auch und ist flexibel für ID, Wert, Name:$('input[name="cols"]').filter("[value='Site']").attr('checked', true);
(gesehen auf diesem Blog )
quelle
Vorherige Antworten kombinieren:
quelle
Sie können einfach verwenden:
quelle
Die gewählte Antwort funktioniert in diesem Fall.
Bei der Frage ging es jedoch darum, das Element basierend auf der Radiogruppe und der dynamischen ID zu finden, und die Antwort kann auch das angezeigte Optionsfeld unberührt lassen.
In dieser Zeile wird genau ausgewählt, wonach gefragt wurde, während die Änderung auch auf dem Bildschirm angezeigt wird.
quelle