getElementByName.focus()
Stefan
- javascript
Moin, moin,
für eine Formularüberprüfung bastel ich mir gerade eine Funktion. Da ich verschiedene gleichartige input-Felder habe, will ich natürlich eine Funktion für alle Felder schreiben. Also übergebe ich den Feldnamen beim Funktionsaufruf onChange="Check(this.value,'name_des_feldes')"
Die Funktion checkt dann, ob alles richtig ist und wenn nicht, wird der Feldinhalt gelöscht - kein Problem. (document.getElementsByName(name_des_feldes)[0].value="";)
Um es den User leichter mit der Neueingabe zu machen, will ich dann den focus auf das entsprechende Feld setzen. Genau das bekomme ich aber nicht hin. Probiert habe ich:
document.getElementsByName(name_des_feldes)[0].focus();
und
document.Name_des_Formulars.elements[''+name_des_feldes].focus();
und einige Spielarten davon :)
Hat jemand einen Tipp wie es funktioniert oder warum es nicht geht?
Herzlichen Dank schon mal im Voraus :)
Viele Grüße
Stefan
Hallo,
Die Funktion checkt dann, ob alles richtig ist und wenn nicht, wird der Feldinhalt gelöscht - kein Problem. (document.getElementsByName(name_des_feldes)[0].value="";)
Um es den User leichter mit der Neueingabe zu machen, will ich dann den focus auf das entsprechende Feld setzen. Genau das bekomme ich aber nicht hin. Probiert habe ich:
document.getElementsByName(name_des_feldes)[0].focus();
und
document.Name_des_Formulars.elements[''+name_des_feldes].focus();
und einige Spielarten davon :)
Ich sehe da kein Problem:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test by TM 11/02</title>
</head>
<body>
<form action="">
<input type="text" name="abc"><br>
<input type="text" name="abc"><br>
<input type="text" name="abc"><br>
<input type="text" name="abc"><br>
<input type="text" name="abc"><br>
<input type="button" value="Test 1" onclick="document.getElementsByName('abc')[2].focus()">
<input type="button" value="Test 2" onclick="document.forms[0].elements['abc'][3].focus()">
</form>
</body>
</html>
Allerdings ist zu beachten, dass die Collection der Elemente mit gleichem Namen nur erzeugt wird, wenn es mehr als 1 gleichartig benanntes Element gibt.
MfG, Thomas
[Nachtrag:]
Allerdings ist zu beachten, dass die Collection der Elemente mit gleichem Namen nur erzeugt wird, wenn es mehr als 1 gleichartig benanntes Element gibt.
Gemeint waren die forms-elements-Collections. Fuer document.getElementsByName() gilt das nicht.
MfG, Thomas
Moin,
ich glaube, wir reden aneinandervorbei :)
Dein Beispiel ist tatsächlich kein Problem :)
Gemeint ist allerdings:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test by TM 11/02 - Vers.1.1</title>
<script>
function check(value,field)
{
if (value = Blödsinn)
{
document.getElementsByName(field)[0].value="";
document.getElementsByName(field)[0].focus();
}
}
</script>
</head>
<body>
<form action="">
<input type="text" name="abc" onchange="check(this.value,'abc')"><br>
<input type="text" name="def" onchange="check(this.value,'def')"><br>
<input type="text" name="ghi" onchange="check(this.value,'ghi')"><br>
<input type=submit>
</form>
</body>
</html>
Verständlicher? Jedenfalls funzt das Value-setzen, aber das focus() eben nicht!
Grüße und Danke
Stefan
Moin,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test by TM 11/02 - Vers.1.1</title>
<script>
function check(field)
{
if (field.value == Blödsinn)
{
field.value="";
field.focus();
}
}
</script>
</head>
<body>
<form action="">
<input type="text" name="abc" onchange="check(this)"><br>
<input type="text" name="def" onchange="check(this)"><br>
<input type="text" name="ghi" onchange="check(this)"><br>
<input type=submit>
</form>
</body>
</html>
und das funktioniert sogar in 3'er Browsern.
Struppi.
und das funktioniert sogar in 3'er Browsern.
Danke, aber bei mir funktioniert das auch im 5er Browser nicht ;)
Habe ich vielleicht irgendwo einen Denkfehler?
Grüße
Stefan
und das funktioniert sogar in 3'er Browsern.
Danke, aber bei mir funktioniert das auch im 5er Browser nicht ;)
Habe ich vielleicht irgendwo einen Denkfehler?
Der Code war kein orginal Code sondern nur sinnbildlich.
OK nochmal:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test by TM 11/02 - Vers.1.1</title>
<script>
function check(field)
{
if (!field.value)
{
field.value = "";
field..focus();
}
}
</script>
</head>
<body>
<form action="">
<input type="text" name="abc" onchange="check(this)"><br>
<input type="text" name="def" onchange="check(this)"><br>
<input type="text" name="ghi" onchange="check(this)"><br>
<input type=submit>
</form>
</body>
</html>
und das funktioniert sogar in 3'er Browsern.
Danke, aber bei mir funktioniert das auch im 5er Browser nicht ;)
Habe ich vielleicht irgendwo einen Denkfehler?
Der Code war kein orginal Code sondern nur sinnbildlich.
OK nochmal:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test by TM 11/02 - Vers.1.1</title>
<script>
function check(field)
{
if (!field.value)
Das ist natürlich blödsinn:
Muss heissen z.b.: if (field.value == 'ungültig')
Der Code war kein orginal Code sondern nur sinnbildlich.
Ja, schon klar!
Ich habe jetzt auch nochmal ein Minibeispiel ausprobiert - es funktioniert nicht: der focus() wird nicht auf das entsprechende Feld gesetzt. Mist!
Trotzdem danke, denn ich habe trotzdem was von Dir gelernt :)
Grüße
Stefan
Der Code war kein orginal Code sondern nur sinnbildlich.
Ja, schon klar!
Ich habe jetzt auch nochmal ein Minibeispiel ausprobiert - es funktioniert nicht: der focus() wird nicht auf das entsprechende Feld gesetzt. Mist!
Also bei mir funktioniert es tadellos.
Hallo,
Ich habe jetzt auch nochmal ein Minibeispiel ausprobiert - es funktioniert nicht: der focus() wird nicht auf das entsprechende Feld gesetzt. Mist!
Versuche mal onblur="..." statt onchange="...".
MfG, Thomas
Hallo,
Ich habe jetzt auch nochmal ein Minibeispiel ausprobiert - es funktioniert nicht: der focus() wird nicht auf das entsprechende Feld gesetzt. Mist!
Versuche mal onblur="..." statt onchange="...".
Dankeschön! So funktioniert's!
:)
Stefan
und das funktioniert sogar in 3'er Browsern.
Danke, aber bei mir funktioniert das auch im 5er Browser nicht ;)
Habe ich vielleicht irgendwo einen Denkfehler?
Der Code war kein orginal Code sondern nur sinnbildlich.
OK nochmal:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test by TM 11/02 - Vers.1.1</title>
<script>
function check(field)
{
if (!field.value)
{
field.value = "";
field..focus();
Ach ich vergaß.
Mit welchen Browsere testest du denn?
Siehst du nicht die Fehlermeldung?
richtig: field.focus();
Struppi.
Moin, moin,
für eine Formularüberprüfung bastel ich mir gerade eine Funktion. Da ich verschiedene gleichartige input-Felder habe, will ich natürlich eine Funktion für alle Felder schreiben. Also übergebe ich den Feldnamen beim Funktionsaufruf onChange="Check(this.value,'name_des_feldes')"
Die Funktion checkt dann, ob alles richtig ist und wenn nicht, wird der Feldinhalt gelöscht - kein Problem. (document.getElementsByName(name_des_feldes)[0].value="";)
Wenn du schon this verwendest, warum dann nicht konsequent?
onChange="check(this);"
functiuon check(e)
{
el.value = "";
el.focus();
}
Struppi.