我有这个:
$(window).bind("focus", function() {
$('input[name=myName]').focus();
});
但它导致“过多的递归”。所以我改成了这个:
$(window).one("focus", function() {
$('input[name=myName]').focus();
});
但这当然只有在窗口第一次获得焦点时才有效。
问:如何编写它以便每次用户切换到另一个屏幕并返回到此屏幕时, myName 都有焦点?
答案 0 :(得分:4)
通过为调用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();
}
});
编辑:在属性选择器的值部分周围添加了引号。这是强制性的。
答案 1 :(得分:1)
这样的事可以吗?
function winFocus(){
$(window).one("focus", function() {
$('input[name="myName"]').focus();
});
}
winFocus(); //first time
$(window).bind("blur",winFocus);