2016-05-09 2 views
0

Я пытаюсь сделать что-то похожее на то, что оно должно быть мертвым простым. Я пытаюсь использовать переменную в getElementByID, которая ожидает цитированное буквальное значение. Есть несколько полей, в которых я хочу запустить один и тот же код проверки, и, если есть ошибка, вернитесь в поле с проблемой. Рассматривая другие вопросы и ответы, кажется, что то, что я пытаюсь сделать, не будет работать, поэтому должен быть лучший вариант, но я не знаю, что это такое.Использование переменной внутри getElementByID для установки фокуса()

Вот что у меня есть:

<!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

На самом деле нет необходимости * получать * элемент; вы уже имеете его в 'FocusMe' -' FocusMe.focus(); '. Кроме того, 'getElementById()' не ожидает буквального, в частности. Он ожидает строковое значение, которое может быть создано с помощью литерала. –

ответ

0

Изменить функцию:

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

, так как вы должны передать идентификатор не значение функции getElementById

или просто (проще как указано в комментариях)

FocusMe.focus(); 
+2

Не было бы FocusMe.focus() быть проще? – nnnnnn

+0

Да! Не будем спорить с этим. –

+0

Я изменил функцию, как описано, используя FocusMe.focus() - но когда я выхожу из любого поля, следующее поле получает фокус после выполнения процедуры. –