Verhindern, dass die Mehrfachauswahl von Gleichen Wert
Arbeite ich an einem Projekt, wo ich ein Formular, dass mehrere "select" - Eingänge, die alle mit den gleichen Optionen. Ich möchte die jquery-deaktivieren/ausblenden einer option in den rest der 'select' - Eingänge, wenn es bereits ausgewählt.
Beispiel:
<select id="1">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
</select>
<select id="2">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
</select>
Wählt der Benutzer 'Volvo' in der ersten select. Ich möchte, dass es entfernt von der zweiten wählen.
Jede info würde sehr geschätzt werden.
- Die Antwort haben Sie sich schließlich pls?
- Yours landete die beste, aber es war immer noch nicht genau, was ich suchte. Ich habe beschlossen, die Verwendung der Jquery UI zu machen, ziehbar form Werte statt. Vielen Dank für deine Hilfe, aber 🙂
- Jquery UI ist immer eine sehr moderne Art und Weise, Dinge zu tun, die ich mag. Zumindest ich denke, es ist die Lösung auf die Frage, wie es beschrieben ist 😉
- In der Tat 🙂 Danke nochmal
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist der code weiterhin das auswählen und deaktivieren alle Zeiten, die wir wollen.
Erste Sache ist, um jedem die Möglichkeit, und sehen Sie dann die ausgewählten Werte, und deaktivieren Sie die Optionen, die zusammen mit den ausgewählten Werten.
Diese 2 Schritte sind wichtig, denn wenn Sie wieder wählen, deaktiviert die Werte von vor der würde weiterhin deaktiviert.
NEUESTE VERSION
Den eleganteren Weg, wo wir mit map() (bei stackoverflow gibt es eine gute Erklärung zu dieser Methode) und filter() von jquery-Funktionen, um die Arbeit zu tun. Weniger Zeilen, und ich denke, dass die gleiche Leistung oder besser.
http://www.jsfiddle.net/dactivo/keDDr/
NEUE VERSION
Habe ich bearbeitet meine Antwort, dies ist meine Letzte version:
http://www.jsfiddle.net/dactivo/kNbWc/
ALTE VERSION
http://www.jsfiddle.net/AyxL3/
Zu verstecken Sie, verwenden Sie den folgenden Ansatz (seit IE-bug verhindert, dass über CSS "display" - Eigenschaft die Einstellung auf "none" auf eine OPTION):
Speichern Sie das original-Liste von Optionen in einem array
-Funktion zum erstellen der select #x aus einem array, rutschen die zuvor ausgewählten Elemente
Zuweisen einer onchange-handler für alle wählt, die eine Schleife durch alle späteren wählt und ruft diese Funktion auf.
Und dann die HTML -
onchange
event zu den JS auch?Hier ist ein funktionierendes Beispiel:
http://jsfiddle.net/aNxBy/
Mit Ihren Daten, die Sie haben, dies zu tun:
Bewusst sein, aber die Tatsache, dass dies nicht deaktivieren deaktivieren, nachdem Sie geändert haben, auf einen anderen Wert. Ich wusste nicht fügen Sie diese in hier, weil Sie nicht genau angeben, was Sie tun musste nach Sie deaktiviert die option...wirklich, es könnte eine Reihe von möglichen Szenarien.
Eine Sache, die Sie tun können, Durchlaufen alle relevanten
select
Elemente, wenn das change-Ereignis feuert, finden Sie die Werte aller ausgewählten Optionen, und deaktivieren Sie gegebenenfalls.Diese Frage war der top-google-Ergebnis für die Suche nach einer Antwort auf diese, so poste ich eine aktualisierte Antwort hier. Dies ist fast die gleiche wie netadictos die Antwort, funktioniert aber für das deaktivieren und erneute aktivieren der Auswahl der Werte und nutzt prop anstelle von attr. Verifiziert arbeiten in Chrom 52.
könnten Sie etwas tun, wie
(natürlich könnte man auch direkt
$(this)
wenn Sie möchten das ändern, um die Optionen, die sich durch diechange
handler)Natürlich funktioniert es nicht rückwärts 🙂
In diesem Fall schlage ich vor, Sie bauen Ihre Optionen direkt mit JavaScript, so dass Sie den kompletten bauplan von dem entfernen der Elemente bei Bedarf, bevor ersetzen Sie verschiedene
select
Stellen Sie sicher, dass im css
.hidden {display:none}
Werfen Sie einen Blick auf diese. Es:
.css('disabled','disabled')
aus und aktivieren Sie Sie wieder, wenn sich der Wert ändert, oder Sie können speichern Sie die Werte in ein array und erstellen/löschen.