我正在尝试这个简单的代码:
<!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上运行良好。
我该如何解决这个问题?
答案 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)
使用超时时,它可以与上面的代码一起使用。