Firefox在链接上激活焦点事件(Opera也是如此)。当我试图将一个处理程序附加到链接以防止它获得焦点,而是将焦点传递给邻居输入字段时发生了一些奇怪的事情。 Firefox会两次触发焦点事件,而Opera只会执行一次。可能它以某种方式与js事件的捕获和冒泡阶段相关联,但我不确定,因为在两种情况下.jvent事件obj的事件.eventPhase属性等于2,即泡沫。
下面有一个测试页:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Text1</title>
</head>
<body>
<a href="#" id="click">click</a>
<input type="text" id="to_pass">
<script type="text/javascript">
var i = 1;
document.getElementById('click').onfocus = function() {
console.log(i);
i += 1;
document.getElementById('to_pass').focus();
return false;
}
</script>
</body>
</html>
当发生点击时,呼叫计数会回显到控制台中。
答案 0 :(得分:0)
在这种情况下,请使用click()
代替focus()
:
var i = 1;
$('#click').click(function(ev) {
ev.preventDefault();
console.log(i);
$('#to_pass').focus();
i += 1;
})