在RHEL5中,无法将焦点转移到Firefox中的另一个文本输入

时间:2013-02-27 11:25:27

标签: javascript jquery html focus

我正在尝试这个简单的代码:

<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>
<script>
$(document).ready(function(){
  $(".foo").bind("contextmenu",function(){
     $(".boo").focus();      
  });
});
</script>
</head>
<body>
<input type = 'text' class = 'foo' /><input type = 'text' class = 'boo' />
</body>
</html>

当在第一个文本上进行右键单击时,它应该将焦点移动到第二个文本输入。这在Windows上的浏览器中运行良好,但在RHEL5中,在检查Firefox时,这不会发生,并且重点仍然在第一个。

我试图将逻辑更改为:

$(".foo").click(function(e) {
   if (e.which == 3)
     $(".boo").focus();
});

它仍然不起作用。但是,如果我将最后一个代码更改为if (e.which == 1)...,则焦点会在单击时移动,但不会以某种方式右键单击。这个问题发生在Firefox的RHEL5和Mac的Firefox,Chrome中。然而,它在Safari和Opera on Mac上运行良好。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

首先将您的输入类更改为ID,这里更合适

<input type="text" id="foo" /><input type="text" id="boo" />

然后尝试这个,简单的Javacript,不需要jQuery。

document.getElementById("foo").onfocus = function(){
  document.getElementById("boo").focus();
}

编辑:工作解决方案涉及在OP的原始代码中使用超时:

setTimeout(function(){$(".boo").focus()}, 0)

使用超时时,它可以与上面的代码一起使用。