将焦点放在onchange事件中的文本框中

时间:2010-01-19 22:54:07

标签: javascript events textbox focus onchange

我正在努力获取它,以便当将某个值放入文本框时,焦点将保留在文本框中(并且将在生产中显示警报)。我试图让它在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 个答案:

答案 0 :(得分:2)

触发onchange事件后,用户将专注于文本框。

如果值为'foo',也许您可​​能希望使用blur事件重新关注文本框。

如果您需要即时结果,则应使用onkeyup

<body>
Enter your name: <input type="text" name="fname" id="fname" onkeyup="
  if(this.value=='foo'){
    this.select();
    this.focus();
  }
  "  />
</body>

答案 1 :(得分:1)

根据Javascript onchange different in IE and 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