Auswahlliste und davon abhägiges Eingabefeld
Marco
- javascript
0 Cheatah0 Axel Richter0 Marco
Hallo,
ich versuche die Verfügbarkeit eines einzeiligen Eingabefeldes von der Auswahl abhängig zu machen welche in einer Auswahlliste getroffen wird.
die Objekte:
<tr>
<td>
<a href="#" title="in welcher Stellung wurde gebore?">Gebärposition:</a>
</td>
<td>
<select name="feld14" size="1" onChange="geb_position()">
<option>andere ...</option>
<option>liegend</option>
<option>Seitenlage</option>
<option>hockend</option>
<option>knieend</option>
<option>stehend</option>
<option>Badewanne</option>
</select>
<input name="feld15" type="text" size="20" maxlength="20">
</td>
</tr>
die Aufgabe:
durch den Event Handler "onChange" und der Funktion "geb_position()" in der Auswahlliste soll bei Auswahl des ersten Eintrages "feld15" aktiviert, bei Auswahl der anderen Einträge, deaktiviert werden.
die Funktion:
function geb_position () {
var x = document.getElementById('feld14').options.selectedIndex;
if(x==0) {
document.getElementById('feld15').disabled=false;
document.getElementById('feld15').style.backgroundColor='#FFFFFF';
}
else
document.getElementById('feld15').disabled=true;
document.getElementById('feld15').style.backgroundColor='#FF9933';
}
}
Leider nimmt das Eingabefeld immer nur einen Status an obwohl die Wenn-Dann Bedingung richtig durchlaufen wird. Hab ich mit alert() kontrolliert. Beim zweiten mal ändern der Auswahl, wird der Status des Eingabefeldes nicht mehr geändert.
Kann mir jemand bitte sagen warum!?
Marco
Hi,
if(x==0) {
document.getElementById('feld15').disabled=false;
document.getElementById('feld15').style.backgroundColor='#FFFFFF';
}
else
document.getElementById('feld15').disabled=true;
document.getElementById('feld15').style.backgroundColor='#FF9933';
}
}
Du schließt eine Klammer mehr als Du öffnest. Warum änderst Du eigentlich die Hintergrundfarbe in jedem Fall auf #FF9933, selbst wenn Du sie Millisekunden vorher auf #FFFFFF gesetzt hast?
Cheatah
Hallo,
die Objekte:
<select name="feld14" size="1" onChange="geb_position()">
^Hier legst Du die _name_ - Eigenschaft fest
</select>
<input name="feld15" type="text" size="20" maxlength="20">
^Hier legst Du die _name_ - Eigenschaft fest
die Funktion:
function geb_position () {
var x = document.getElementById('feld14').options.selectedIndex;
^ Hier suchst Du nach einer ID.
if(x==0) {
document.getElementById('feld15').disabled=false;
^ Hier suchst Du nach einer ID.
...
}
else
document.getElementById('feld15').disabled=true;
^ Hier ist der else-Zweig beendet, weil nach else nicht mit { ein Aneisungsblock geöffnet wurde.
document.getElementById('feld15').style.backgroundColor='#FF9933';
}
Und das hat funktioniert? Das glaube ich nicht, auch nicht einmalig ;-).
Formularelemente kannst Du über ihren Namen ansprechen:
document.forms["Formularname"].elements["Elementname"]
Für document.gtElementsById("ElementID") benötigt das Element eine ID-Eigenschaft.
viele Grüße
Axel
Super :-) danke Axel - versteh jetzt was ich falsch gemacht habe.