Перемещение фокуса на текстовое поле в событии onchange

StackOverflow https://stackoverflow.com/questions/2097840

Вопрос

Я пытаюсь сделать так, чтобы при вводе определенного значения в текстовое поле фокус оставался в текстовом поле (и в производстве отображалось предупреждение).Я пытаюсь заставить это работать в 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top