Rolf b: jQuery required setzen bei select Auswahl

Beitrag lesen

Edit: Ich habe VOR 13:13 Uhr angefangen zu schreiben 😉


Ich denke, was du suchst, ist das change-Event.

$("select").change(function(evt) {
   var otherId = this.Id === "f1" ? "#f2" : "#f1";
   $(otherId).prop("required", this.selectedIndex === 0);

});

Der Change-Handler schaut sich die ID des Select an, für das er aufgerufen wurde, und ermittelt daraus die ID des Partner-Select. Bei 2 Selects geht das so einfach, wenn Du mehr hast, wird das größer (bzw. man braucht eine abstraktere Lösung).

An diesem anderen Select wird das required-Property gesetzt, und zwar auf true, wenn der eigene selectedIndex gleich 0 ist (entspricht dem "Bitte wählen") und sonst auf false.

Könnte schon reichen...

Zum Radio-Button hätte ich auch noch Anmerkungen…

  • :radio ist eine jQuery-Extension und langsam. input[type=radio] kann mit querySelectorAll verarbeitet werden und ist damit schneller.
  • Du solltest jeden Radio-Button einzeln in ein Label setzen, damit der Klick auf den Text "Ja" oder "Nein" ebenfalls den Radiobutton umstellt. Also so:
Automatisch starten?
<label><input name='autoStart' type='radio' value='Ja' /> Ja</label>
<label><input name='autoStart' type='radio' value='Nein' /> Nein</label>
  • Dein Click-Hander für die Radiobuttons lässt sich deutlich kompakter schreiben, jQuery kann mehr als ein Objekt selektieren und führt die angegebene Methode für alle Objekte im matched set aus. Und Codemuster der Art if (bedingung) func(true) else func(false) sind unnötig, das schreibt man kürzer als func(bedingung). Damit fällt dein Click-Handler zu dem hier ineinander:
$('input[type=radio][name=autoStart]').click(function(evt) {
   $('select').prop('required', this.Value === 'Ja');
});

Rolf