0

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

<!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)...,则焦点会转移到单击上,而不是右键单击。这个问题发生在RHEL5Firefox 和 Mac 中的 Firefox、Chrome 中。但是,它在 Mac 上的 Safari 和 Opera 中运行良好。

我怎样才能解决这个问题?

4

1 回答 1

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)

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

于 2013-02-27T12:52:37.363 回答