2012-11-07 4 views
0

В настоящее время я использую автофокус html5 для формы входа. Я ищу функцию, которая будет автофокусировать текстовое поле имени пользователя только в том случае, если она пуста, и если она не пуста для автофокусировки в следующем текстовом поле.фокус текстовое поле только если значение пустое

ответ

2

С HTML ниже

<input name="username" value="a" autofocus="autofocus"> 
<input name="password" type="password">​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

Вы можете сделать что-то подобное с JQuery

var $username = $('[name="username"]'); 
var $password = $('[name="password"]'); 
if($username.val()​​​​​​​​​​​​​​​​​​​​​.trim().length > 0){ 
    $password.focus(); 
}​ 

Должно быть так просто. Убедитесь, что Javascript находится в нижней части страницы, или вы можете использовать функцию $ (document) .ready(), чтобы убедиться, что Javascript запущен после визуализации HTML.


Подробнее на основе дополнительной информации

<asp:TextBox ID="UserName" runat="server" autofocus="true" required="true"></asp:TextBox> 

Причина это не работает для вашего дела, потому что вы не имеете атрибут «имя». Я думаю, вы, вероятно, должны немного почитать о jQuery selector, чтобы понять, почему. Если вы используете идентификатор, тогда вы это сделаете.

var $username = $('#UserName'); 
var $password = $('#password'); 
if($username.val()​​​​​​​​​​​​​​​​​​​​​.trim().length > 0){ 
    $password.focus(); 
}​ 

Конечно, теперь вам нужно подобрать селектор для пароля, чтобы он действительно выбирал пароль для установки фокуса.

+0

Ваш пример работает для полей ввода, но при попытке использовать его с текстовым полем asp это не так. Любая идея почему? –

+0

Как выглядит HTML-код? Покажите пример, чтобы я мог дать вам соответствующий ответ. – juminoz

+0

1

Ищет страницу для полей ввода и заставляет фокус на первый пустой. Возможно, мы захотим ограничить поля данной формой и, возможно, добавить текстовые поля, но я оставлю это вам, хотя и не слишком сложно.

var inputs = document.getElementsByTagName('input'), 
    i = -1, I = inputs.length, 
    curr; 

for (; ++i < I;) { 
    curr = inputs[i]; 
    if (!curr.value.length) { 
     curr.focus(); 
     break; 
    } 
}​ 
Смежные вопросы