Сосредоточение внимания на текстовом поле в событии onchange - PullRequest
1 голос
/ 20 января 2010

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

2 голосов
/ 20 января 2010

Когда происходит событие 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>
1 голос
/ 20 января 2010

В соответствии с 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.

Live: http://jsbin.com/ofeva

...