Перемещение фокуса на текстовое поле в событии onchange
-
21-09-2019 - |
Вопрос
Я пытаюсь сделать так, чтобы при вводе определенного значения в текстовое поле фокус оставался в текстовом поле (и в производстве отображалось предупреждение).Я пытаюсь заставить это работать в Firefox 3.5.7, но безуспешно.
Как я могу это сделать, когда текстовое поле имеет определенное значение в onchange
что он останется сфокусированным/перефокусированным на текстовом поле?
Живой пример находится на http://jsbin.com/ipina
<body>
Enter your name: <input type="text" name="fname" id="fname" onchange="
if(this.value=='foo'){
this.select();
this.focus();
}
" />
</body>
Кроме того, я не получаю никаких ошибок или предупреждений JavaScript в консоли ошибок при выполнении этого кода.
Решение 2
В соответствии с Javascript onchange отличается в IE и FireFox Мне нужно было установить фокус после того, как произойдет событие onchange, поэтому мне пришлось получить что-то вроде этого:
Enter your name: <input type="text" name="fname" id="fname" onblur="
if(this.value=='foo'){
alert('bah');
setTimeout('document.getElementById(\'fname\').focus();document.getElementById(\'fname\').select();',0);
}
" />
А еще мне приходилось ловить это при потере фокуса, а не обязательно при изменении текста, поэтому пришлось использовать onblur вместо onchange.
Жить: http://jsbin.com/ofeva
Другие советы
Когда onchange
событие запускается, пользователь фокусируется на текстовом поле.
Возможно, вы захотите использовать blur
событие для повторной фокусировки на текстовом поле, если значение равно «foo».
Если вам нужны мгновенные результаты, вы должны использовать onkeyup
.
<body>
Enter your name: <input type="text" name="fname" id="fname" onkeyup="
if(this.value=='foo'){
this.select();
this.focus();
}
" />
</body>