Javascript onblur()之后,focus()似乎不起作用

Javascript onblur()之后,focus()似乎不起作用,javascript,Javascript,我有一个输入字段的列表,当我用tab键遍历它们时,我想返回到第一个字段,但它似乎不起作用 这是我的HTML <form id="form"> <input id="mon" type="text"/> Month<br> <input id="day" type="text"/> Day<br> <input id="num" type="text"/> Year<br> <input id

我有一个输入字段的列表,当我用tab键遍历它们时,我想返回到第一个字段,但它似乎不起作用

这是我的HTML

<form id="form">
  <input id="mon" type="text"/> Month<br>
  <input id="day" type="text"/> Day<br>
  <input id="num" type="text"/> Year<br>
  <input id="amt" type="text"/> Amount<br>
</form>

我认为您的
onblur
事件处理程序在默认处理程序之前被调用,导致焦点首先转移到输入“mon”,然后转移到浏览器认为下一步应该聚焦的任何位置。尝试使用
onkeypress
事件。e、 g

window.onload=function(){
  $('mon').focus();
  $('amt').onkeydown = function(e) {
    //check for IE weirdness
    if (e === undefined && event !== undefined)
      e = event;
    if (e.keyCode == 9) {
      $('mon').focus();
      return false;
    }
  }
}
function $(a){return document.getElementById(a)}
编辑:
onkeydown
实际上似乎在更多浏览器中工作


编辑2:添加IE案例。IE并不总是将事件作为参数传递

要使光标显示在第一个输入框上,您需要将输入框的值分配给自身(hack)。您还需要“returnfalse”来停止事件传播。修改后的模糊函数如下所示

<input id="mon" type="text" onfocus="this.value=this.value;" />

$('amt').onblur = function(){ $('mon').focus(); return false; }

$('amt').onblur=function(){$('mon').focus();返回false;}

看看这把小提琴。我想这就是你想要实现的。

您的ID选择器中不需要一些#符号吗?@sethobrien-这不是jQuery。。。看看问题中定义的
$
函数。我的错。我使用控制台在SO页面中设置了您在这里描述的内容,当我从答案框中弹出选项卡时,它似乎可以聚焦搜索框。你能发布一个JSFIDLE吗?在Firefox7中,这不太管用。“月份”输入框在跳出“金额”框后将突出显示,但您无法在其中键入内容。您在哪个浏览器中测试了此功能?在Firefox 7或Chromium 13中它对我不起作用。我希望有一个更优雅一点的答案,但它起作用了。
<input id="mon" type="text" onfocus="this.value=this.value;" />

$('amt').onblur = function(){ $('mon').focus(); return false; }