Wie können Sie mit Core jQuery alle Optionen eines Auswahlfelds entfernen, dann eine Option hinzufügen und auswählen?
Mein Auswahlfeld ist das Folgende.
<Select id="mySelect" size="9"> </Select>
BEARBEITEN: Der folgende Code war hilfreich bei der Verkettung. (In Internet Explorer) .val('whatever')
hat die hinzugefügte Option jedoch nicht ausgewählt. (Ich habe in beiden .append
und den gleichen 'Wert' verwendet .val
.)
$('#mySelect').find('option').remove().end()
.append('<option value="whatever">text</option>').val('whatever');
BEARBEITEN: Beim Versuch, diesen Code nachzuahmen, verwende ich den folgenden Code, wenn die Seite / das Formular zurückgesetzt wird. Dieses Auswahlfeld wird mit einer Reihe von Optionsfeldern gefüllt. .focus()
war näher, aber die Option wurde nicht wie bei ausgewählt ausgewählt .selected= "true"
. An meinem vorhandenen Code ist nichts falsch - ich versuche nur, jQuery zu lernen.
var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";
BEARBEITEN: Die ausgewählte Antwort entsprach genau dem, was ich brauchte. Das hat bei mir funktioniert:
$('#mySelect').children().remove().end()
.append('<option selected value="whatever">text</option>') ;
Aber beide Antworten führten mich zu meiner endgültigen Lösung.
quelle
.append($("<option></option>").attr("value", '123').text('ABC!')
.append($("<option></option>", {'value':'123'}).text('ABC!')
quelle
empty()
stellte sich natürlich schneller heraus;) jsperf.com/find-remove-vs-empty.val('whatever')
am Ende der Kette ein hinzufügen , wie in Matts Antwort.Warum nicht einfach Javascript verwenden?
quelle
Wenn Sie alle Optionen außer der ersten (normalerweise die Option "Bitte wählen Sie einen Artikel aus") aus der Auswahl entfernen möchten, können Sie Folgendes verwenden:
quelle
Ich hatte einen Fehler in IE7 (funktioniert gut in IE6), bei dem die Verwendung der obigen jQuery-Methoden die Auswahl im DOM löschte, aber nicht auf dem Bildschirm. Mit der IE Developer Toolbar konnte ich bestätigen, dass die Auswahl gelöscht wurde und die neuen Elemente enthielt, aber visuell die Auswahl immer noch die alten Elemente angezeigt - obwohl Sie sie nicht auswählen konnten.
Das Update bestand darin, Standard-DOM-Methoden / -Eigenschaften (wie im Poster-Original) zum Löschen anstelle von jQuery zu verwenden und weiterhin jQuery zum Hinzufügen von Optionen zu verwenden.
quelle
Sie wissen nicht genau, was Sie unter "Hinzufügen und Auswählen" verstehen, da es ohnehin standardmäßig ausgewählt wird. Wenn Sie jedoch mehr als eine hinzufügen würden, wäre dies sinnvoller. Wie wäre es mit so etwas wie:
Antwort auf "BEARBEITEN" : Können Sie klarstellen, was Sie unter "Dieses Auswahlfeld ist mit einer Reihe von Optionsfeldern gefüllt" meinen? Ein
<select>
Element kann (legal) keine<input type="radio">
Elemente enthalten .quelle
quelle
quelle
Dank der Antworten, die ich erhalten habe, konnte ich Folgendes erstellen, das meinen Anforderungen entspricht. Meine Frage war etwas mehrdeutig. Vielen Dank für das Follow-up. Mein letztes Problem wurde gelöst, indem "ausgewählt" in die Option aufgenommen wurde, die ich auswählen wollte.
quelle
Wie wäre es, wenn Sie nur den HTML-Code in neue Daten ändern.
Ein anderes Beispiel:
quelle
Löschen Sie zuerst alle vorhandenen Optionen und führen Sie die erste aus (- Select--)
Fügen Sie neue Optionswerte mithilfe der Schleife nacheinander hinzu
quelle
Ich habe im Netz so etwas wie unten gefunden. Mit Tausenden von Optionen wie in meiner Situation ist dies viel schneller als
.empty()
oder.find().remove()
von jQuery.Mehr Infos hier .
quelle
Ein anderer Weg:
Unter diesem Link finden Sie bewährte Methoden: https://api.jquery.com/select/
quelle
In der ersten Codezeile werden alle Optionen eines Auswahlfelds entfernt, da keine Kriterien für die Optionssuche erwähnt wurden.
In der zweiten Codezeile werden die Option mit dem angegebenen Wert ("testValue") und dem angegebenen Text ("TestText") hinzugefügt.
quelle
Aufbauend auf Maurettos Antwort ist dies etwas einfacher zu lesen und zu verstehen:
Um alle Optionen außer einer mit einem bestimmten Wert zu entfernen, können Sie Folgendes verwenden:
Dies wäre besser, wenn die hinzuzufügende Option bereits vorhanden wäre.
quelle
Verwendet die jquery prop () , um die ausgewählte Option zu löschen
quelle
Dadurch wird Ihr vorhandenes mySelect durch ein neues mySelect ersetzt.
quelle
Sie können dies einfach durch Ersetzen von HTML tun
quelle
quelle
quelle
Ich habe diesen Code in Select2 - Clearing Selections gesehen
Dieser Code funktioniert auch ohne Select2 gut mit jQuery
quelle
Hoffe es wird funktionieren
quelle
quelle