我有这个:
$(window).bind("focus", function() {
$('input[name=myName]').focus();
});
但它导致了“太多递归”。所以我把它改成这样:
$(window).one("focus", function() {
$('input[name=myName]').focus();
});
但这当然只在窗口第一次获得焦点时有效。
问:我该如何编写,以便每次用户切换到另一个屏幕并返回到此屏幕时,myName 都会获得焦点?
最佳答案
通过将处理程序分配给调用e.stopPropagation()
的输入来防止事件冒泡:
$(window).bind("focus", function() {
$('input[name="myName"]').focus();
});
$('input[name="myName"]').focus(function(e) {
e.stopPropagation();
});
或者只是让您的window
函数检查e.target
以查看事件来自何处:
$(window).bind("focus", function(e) {
if( e.target === window ) {
$('input[name="myName"]').focus();
}
});
<小时/>
编辑:在属性选择器的值部分周围添加引号。这是强制性的。
关于jQuery 窗口绑定(bind)焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6035899/