Javascript Felder auf readonly setzten

Z

zerohunter

Guest
Hallo zusammen,

ich suche eine Möglichkeit bei Eingabe eines Feldes, andere Felder zu deaktivieren.

Also Beispiel: Feld: Kundennummer und Felder: Strasse, PLZ

Wenn ich ich jetzt in das Feld Kundennummer was eintrage, werden die Felder Strasse und PLZ automatisch auf readonly gesetzt. Sollte ich doch die Kundennummer wieder rausnehmen, sollen die Felder wieder frei zum eintragen sein.

Gruß
ZeroHunter
 
Das geht so ungefähr:

<form name="kunde" method=....>

Also das form sollte einen eindeutigen Namen bekommen.

Dann kann man die Felder so schalten:

document.forms["kunde"].elements["inputname"].disabled = true;

Das macht man am besten in eine Funktion. (disableInput oder sowas)

Und für die "Trigger" Felder macht man:

onchange="disableInput(...
 
Hallo kais,

vielen lieben Dank.

Ich habe es nun so gelöst:

CODE
<script>

function check(){
if ( document.forms["kunde"].elements["kundennummer"].value == '' ) {

document.forms["kunde"].elements["strasse"].disabled = false;
document.forms["kunde"].elements["plz"].disabled = false;
} else {
document.forms["kunde"].elements["strasse"].disabled = true;
document.forms["kunde"].elements["plz"].disabled = false;
}
}

</script>

<form name="kunde">
<input type="text" name="kundennummer" value="" onChange="check()">
<input type="text" name="strasse" value="" >
<input type="text" name="plz" value="" >
</form>



Vielleicht kann man das noch etwas besser machen, aber ich denke das geht so.

ZeroHunter
 
Wenn es für dich so geht, ist es doch schön so.
Ich glaube (grad keine Zeit das auszuprobieren) das einige Browser Felder die disabled sind eventuell nicht mit schicken
beim Request dann. Müsstest Du nochmal checken und eventuell beachten.
 
Als Tipp kann ich noch den unten aufgeführten Befehl geben:

document.getElementById("strasse").style.backgroundColor ="#efefef";

Im Firefox wird das Feld sauber grau ausgeblendet, im IE leider nicht. Dieser Befehl setzt den Hintergrund der Input-Feldes auf grau

ZeroHunter
 
CODE function check(){
if ( document.forms["kunde"].elements["kundennummer"].value == '' ) {

document.forms["kunde"].elements["strasse"].disabled = false;
document.forms["kunde"].elements["plz"].disabled = false;
} else {
document.forms["kunde"].elements["strasse"].disabled = true;
document.forms["kunde"].elements["plz"].disabled = false;
}
}


die Funktion hat denke ich mal einen Fehler, da PLZ immer Editierbar ist.

Wenn man das in betracht zieht, kann man das ganze noch kürzen:


CODE function check(){
var tmp = (document.forms["kunde"].elements["kundennummer"].value != '' );

document.forms["kunde"].elements["strasse"].disabled = tmp;
document.forms["kunde"].elements["plz"].disabled = tmp;
}


Ich persönlich würde eher die DOM-Variante bevorzugen...also getElementById anstatt forms und elements...
 
Zurück
Oben