xaero1982
Goto Top

DropDown onChange Optionen entfernen

Moin Zusammen,

ich bräuchte nochmal einen Anstoß.

Beispiel: Eine Seite auf der 10 DropDownfelder sind. Diese Felder sollen mit den Zahlen 0 bis 10 gefüllt werden.
Wenn ich nun im ersten Select-Feld die 1 auswähle soll diese in den anderen verschwinden. Gleiches gilt für die anderen auch. Also wenn ich in jedem Feld was gewählt habe soll zu guter Letzt nur noch die 0 übrig sein zur Auswahl, welche aber bleiben muss. Wichtig: Die 0 muss in allen Feldern bleiben!

Jemand eine Idee wie ich das umsetzen kann mit JS?

Grüße
x

Content-Key: 550191

Url: https://administrator.de/contentid/550191

Printed on: April 23, 2024 at 18:04 o'clock

Member: TRDSRLZ
TRDSRLZ Feb 21, 2020 updated at 09:17:21 (UTC)
Goto Top
Hm...

ich würde mir beim laden der Seite ein Array initialisieren, das die Werte von 0-10 enthält.

Dann ein temporäres Array erstellen erzeugen das die noch verfügbaren Werte enthält.

Und ein temporäres Array das die schon reservierten Werte enthält.


Eine Funktion schreiben die bei der Auswahl eines Wertes in einem Dropdown-Feld den ausgewählten Index aus dem temporären Array entfernt und dem reservierten Array hinzufügt, zu guter letzt eine Funktion die die Dropdownfelder mit den aktualisierten Werten befüllt. Evtl. mit vorheriger Prüfung ob es sich um ein DropDown mit Wert '0' handelt oder nicht und dann nur die '0'er zu ändern.

Ich würde aber auch eine Funktion einbauen, die einen schon belegten Wert wieder freigibt. Prüft also, ob der Wert der im Dropdown ausgewählt war im reservierten Array war und legt diesen dann wieder in das verfügbare Array....

kann man sicher eleganter lösen, aber als erster Ansatz könnte es helfen.
Member: eisbein
eisbein Feb 21, 2020 updated at 09:53:19 (UTC)
Goto Top
Hallo,

Ich würde das mit CSS und Jquery lösen.

CSS:
<style>
.hide {display:none;}
</style>

In Jquery dann bei allen <option> die Klasse hide mit .addclass hinzufügen, wenn deren Value deiner Auswahl entspricht - ausgenommen Value == 0.

Soweit zur anstößigen Idee face-smile

Gruß
eisbein

PS: CSS korrigiert
Member: TRDSRLZ
TRDSRLZ Feb 21, 2020 at 09:38:16 (UTC)
Goto Top
Wird es dann nur nicht angezeigt und ist trotzdem wählbar? Bin nicht so fit mit jQuery würde mich daher echt interessieren.

Danke schon mal für die Antwort.
Member: eisbein
eisbein Feb 21, 2020 at 09:43:07 (UTC)
Goto Top
Wird es dann nur nicht angezeigt und ist trotzdem wählbar?

Wie willst du etwas auswählen, das nicht angezeigt wird? face-wink
Member: TRDSRLZ
TRDSRLZ Feb 21, 2020 at 09:44:57 (UTC)
Goto Top
Punkt für dich.
Member: eisbein
eisbein Feb 21, 2020 at 09:52:49 (UTC)
Goto Top
Punkt für dich.

Fast. face-wink

Habe es gerade getestet. Es sollte nicht visibility: hidden sondern display:none lauten.
Member: TRDSRLZ
TRDSRLZ Feb 21, 2020 at 09:54:11 (UTC)
Goto Top
Gut dass wir drüber gerdet haben face-wink
Member: eisbein
eisbein Feb 21, 2020 updated at 10:27:06 (UTC)
Goto Top
Zitat von @TRDSRLZ:

Gut dass wir drüber gerdet haben face-wink

Hier ein Beispiel
Mitglied: 143127
143127 Feb 21, 2020 updated at 10:13:56 (UTC)
Goto Top
Gruß
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>Demo DropDowns</title>
</head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>  
<script type="text/javascript">  
var items =[0,1,2,3,4,5,6,7,8,9,10];
$(document).ready(function(e) {
	// populate all fields
	$('select.mydd').each(function(index, element) {  
        for (i= 0;i < items.length;i++){
			element.append(new Option(i,i));
		}
    });
	// add change handler
	$('select.mydd').change(function(e) {  
		// load selected values into array
		var selected = ;
        $('select.mydd').each(function(index, element) {  
        	if(element.value != 0){
				selected.push(element.value);
			}
        });
		// show all
		$('select.mydd option').show();  
		// hide slected
		for (i= 0;i < selected.length;i++){			
			$('select.mydd option[value="' +  selected[i] + '"]').hide();  
		}
    });
	
});
</script>
<body>
<select class="mydd" id="dd1"></select>  
<select class="mydd" id="dd2"></select>  
<select class="mydd" id="dd3"></select>  
<select class="mydd" id="dd4"></select>  
<select class="mydd" id="dd5"></select>  
<select class="mydd" id="dd6"></select>  
<select class="mydd" id="dd7"></select>  
<select class="mydd" id="dd8"></select>  
<select class="mydd" id="dd9"></select>  
<select class="mydd" id="dd10"></select>  

</body>
</html>
Member: eisbein
eisbein Feb 21, 2020 updated at 10:27:52 (UTC)
Goto Top
$('select.mydd option[value="' + selected[i] + '"]').hide();

Danke für den Zaunpfahl ... face-smile