Formularelemente gruppenweise abschalten

Sprint

Erfahrenes Mitglied
Hallo,

ich habe leider nicht viel mit JavaScript zu tun bzw. mache fast alles mit PHP. Doch manchmal läßt es sich halt nicht umgehen. Mein aktuelles Problem liegt in einem sehr umfangreichen Formular, bei dem, nach Auswahl eines <select> Teile des Formulars deaktiviert werden sollen. Ich hab zwar eine Lösung mit der das geht, nur werden da alle Elemente einzeln angesprochen.
Deshalb war meine Überlegung, alle betroffenen Formularelemente mit einer ID zu kennzeichnen, um dann mit einem Aufruf alle auf ein Mal zu deaktivieren.

Hier mal ein Beispiel, wie das Formular aussehen sollte und die Funktion dazu im Pseudocode:

HTML:
<script language="JavaScript">
function liefer_datensperre(element){
	if (element.options[element.selectedIndex].value != '0'){
		document.formular.getElementById(sperren).disable = true;
	}
}
</script>
<select name="lieferant" size="1" onchange="liefer_datensperre(this);">
	<option value="0">0</option>
	<option value="1">1</option>
	<option value="2">2</option>
</select>
<input id="sperren" type="radio" name="exportieren" value="1" />
<input id="sperren" type="radio" name="exportieren" value="radioValue" />
<input id="sperren" type="checkbox" name="unterlagen1[0]" value="checkboxValue" />
<input id="sperren" type="checkbox" name="unterlagen1[1]" value="checkboxValue" />
<input id="sperren" type="checkbox" name="unterlagen1[2]" value="checkboxValue" />
<textarea id="sperren" name="unterlagen2" rows="4" cols="40"></textarea>
<input type="text" name="name" size="24" />

Läßt sich sowas realisieren oder muß ich doch alle Elemente einzeln ansprechen?

Danke schon mal im Voraus,
Sprint
 
Moin,

Läßt sich sowas realisieren oder muß ich doch alle Elemente einzeln ansprechen?
Das geht so leider nicht, du müsstest die Elemente alle einzeln ansprechen, sofern du ihr disabled-Attribut Ändern willst.

Was ginge:

Du könntest diese Elemente alle in ein gemeinsames Elternelement verfrachten, und dieses, wenn du "disablen" willst, aus dem Formular herauslösen(z.B. in irgendein anderes, verstecktes Element)...das hätte für deine Anwendung wohl gewünschten Effekt.

Hier mal ein Beispiel:

Code:
<html>
<head>
<title>Test</title>
</head>
<body>
<script language="JavaScript">
function liefer_datensperre(element)
{
  var target=(element.value==0)
                  ? document.getElementById('wrapper')
                  : document.getElementById('dummie');
	target.appendChild(document.getElementById('sperren'));
}
</script>
<form>
<select name="lieferant" size="1" onchange="liefer_datensperre(this);">
	<option value="0">0</option>
	<option value="1">1</option>
	<option value="2">2</option>
</select>
<div id="wrapper">
  <div id="sperren">
    <input  type="radio" name="exportieren" value="1" />
    <input  type="radio" name="exportieren" value="radioValue" />
    <input  type="checkbox" name="unterlagen1[0]" value="checkboxValue" />
    <input  type="checkbox" name="unterlagen1[1]" value="checkboxValue" />
    <input type="checkbox" name="unterlagen1[2]" value="checkboxValue" />
    <textarea  name="unterlagen2" rows="4" cols="40"></textarea>
  </div>
</div>
<input type="text" name="name" size="24" />
</form>
<div id="dummie" style="display:none"></div>
</body>
</html>
 
Hi Sven,

auch wenn die Gruppenansprache nicht geht, ist die andere Lösung doch genauso gut. Aus den Augen - aus dem Sinn.
Vielen Dank dafür.
 
Zurück