2016-05-09 11 views
0

Ich versuche, etwas zu tun, das wie es scheint tot einfach sein sollte. Ich versuche eine Variable in getElementByID zu verwenden, die einen literalen Wert in Anführungszeichen erwartet. Es gibt mehrere Felder, in denen ich den gleichen Validierungscode ausführen möchte. Wenn ein Fehler vorliegt, kehren Sie zu dem Feld mit dem Problem zurück. Wenn ich mir andere Fragen und Antworten anschaue, scheint es, dass das, was ich versuche, nicht funktionieren wird, also muss es eine bessere Option geben, aber ich weiß nicht, was es ist.Verwenden einer Variable in getElementByID zum Festlegen von Fokus()

Hier ist, was ich habe:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>I just want to focus!</title> 
<script> 
// this section of code would validate 3 similar fields 
function FocusFoo(FocusMe) { 
    // validation routine here 
    // on failure, I want to select the field that called the function  
    document.getElementById(FocusMe.value).focus(); 
    // fails because getElementById expects a quoted literal. 
    return false; 
} 
</script> 
</head> 
<body> 
<form id="FooForm" name="FooForm" action="foo.php" method="post"> 
<p>Leave Foo 1 to test focus.</p> 
<p>Foo 1: <input type="text" id="Foo1" name="Foo1" onBlur="FocusFoo(this)"></p> 
<p>Foo 2: <input type="text" id="Foo2" name="Foo2" onBlur="FocusFoo(this)"></p> 
<p>Foo 3: <input type="text" id="Foo3" name="Foo3" onBlur="FocusFoo(this)"></p> 
</form> 
</body> 
</html> 
+2

Es gibt nicht wirklich eine Notwendigkeit, * das * Element zu erhalten; Sie haben es bereits in 'FocusMe' -' FocusMe.focus(); '. Außerdem erwartet 'getElementById() 'kein Literal. Es erwartet einen String-Wert, der mit einem Literal erstellt werden kann. –

Antwort

0
Ihre Funktion ändern

:

document.getElementById(FocusMe.id).focus(); 

, da Sie die ID nicht den Wert auf die getElementById Funktion

oder (leichter passieren müssen wie von den Kommentaren angemerkt)

FocusMe.focus(); 
+2

Wäre FocusMe.focus() nicht einfacher? – nnnnnn

+0

Ja! Daran werde ich nicht streiten. –

+0

Ich habe die Funktion wie beschrieben geändert - mit FocusMe.focus() - aber wenn ich aus einem Feld heraus, erhält das nächste Feld den Fokus, nachdem die Prozedur ausgeführt wird. –

Verwandte Themen