JavaScript - <select> andere <option> ausgrauen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Wie gehe ich da vor?

du setzt einen onchange Eventhandler auf das erste select:

<select onchange="disable(this.value)">

In der JS Funktion disable() fragst du den übergebenen Wert ab und graust die gewünschten <option> Elemente aus

Alex

Zweirad2 
Fragesteller
 22.06.2022, 10:35

Hi Alex, danke dir.
Wenn ich zur späteren Zeit weitere options einfüge, wie verhält es sich da? Vom Prinzip soll es dann ja gleich bleiben: manche Marken haben Fußballschuhe, manche nicht und die sollen dann ausgegraut werden.
Danke nochmal. :-)

0
EinAlexander  22.06.2022, 11:12
@Zweirad2
Wenn ich zur späteren Zeit weitere options einfüge, wie verhält es sich da?

exakt gleich. Das Prinzip ist so, dass immer bei der Auswahl eines Herstellers eine Funktion aufgerufen wird, an die der Herstellername mittels this.value() übergeben wird.

Und innerhalb der Funktion entscheidest du dann, welche Felder ausgegraut werden:

function disable(Hersteller)
{
  if(Hersteller == 'Adidas') ...
  if(Hersteller == 'Nike') ...
  if(Hersteller == 'Puma') ...
}
1
Zweirad2 
Fragesteller
 22.06.2022, 12:11
@EinAlexander

Nochmal eine kleine Frage dazu: ausgrauen würde ich ja mit dem disabled="disabled" im HTML option-tag. Das müsste dann in der Funktion ja so ablaufen, dass ich das mit z.B. setAttribute() einfüge, oder? Muss mich da ein bisschen entlang arbeiten, bin wie gesagt noch recht frisch dabei. Danke dir für die ausführliche Hilfe!

0
Zweirad2 
Fragesteller
 22.06.2022, 12:20
@Zweirad2

ich habe jetzt folgendes mit eingebaut:

function disable(Hersteller) {
 let sport = document.getElementById("sport");
 
 if(Hersteller == 'Nike'){
 	console.log('Das ist ein Nike Schuh') // nur so
  	sport.setAttribute("disabled", "disabled"); 	
 }} 

Das funktioniert auch, aber dann zeigt er mir das Feld "Sport" was in dem Falle jetzt zum Beispiel "Fußballschuh" wäre, ausgegraut an. Er setzt den value ja für immer. Möchte ja aber, dass es nur an Nike geknüpft ist, bzw. an Reebok z.B.
Wo ist mein Fehler?

0
Zweirad2 
Fragesteller
 22.06.2022, 12:29
@Zweirad2

okay, ich habe nachgedacht und es selber gecheckt. :D Wie gut, dass gutefrage mich nicht als Spammer sieht, aber ich musste das jetzt ja nochmal beantworten. Ich habe, so wie du es ja gesagt hast, ein weiteres if hinzugefügt und das Attribut einfach wieder gelöscht, wenn man den anderen Hersteller ausgewählt hat. :P

1
EinAlexander  22.06.2022, 13:37
@Zweirad2
ein weiteres if hinzugefügt 

Musst du nicht. Es genügt, wenn die erste Anweisung innerhalb der Funktion alle disabled Felder zunächst enabled. Und erst danach wird je nach Hersteller ausgegraut.

0

Zur Nutzerfreundlichkeit würde ich hier eher auf das entfernen der Option setzen. Es gibt viele Personen, die keine Ahnung von sowas haben und die kennen den Unterschied zwischen disabled und enabled nicht. Da sollte man am besten direkt Vorkehrungen treffen und bei Auswahl von 1, die Auswahl in 2 komplett überarbeiten, dass dort andere Optionen sind, aber nichts disabled

geheim007b  22.06.2022, 08:04

man will aber vieleicht trotzdem dass der Nutzer weiß dass es das ganze gibt, eben nur nicht verfügbar ist. Ausgrauen/disablen sollte jeder kennen

1
Zweirad2 
Fragesteller
 22.06.2022, 08:22

An sich verstehe ich, was du meinst. Ich würde es auch gerne anzeigen lassen. Habt ihr denn einen Ansatz, wie man da vorgeht? :)

0