2011-05-17 68 views
3

我有这样的:jQuery的窗口绑定重点

$(window).bind("focus", function() { 
    $('input[name=myName]').focus(); 
}); 

但是这是造成“太多递归”。所以我把它改为:

$(window).one("focus", function() { 
    $('input[name=myName]').focus(); 
}); 

但这当然只在窗口第一次获得焦点时起作用。

问:我该如何编写它,以便每次用户切换到另一个屏幕并返回到这一个,然后myName有重点?

回答

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(); 
    } 
}); 

编辑:围绕p值添加引号属性选择器的艺术。这是强制性的。

+0

谢谢帕特里克。 – 2011-05-18 14:27:04

1

可以这样的工作?

function winFocus(){ 
    $(window).one("focus", function() { 
     $('input[name="myName"]').focus(); 
    }); 
} 

winFocus(); //first time 

$(window).bind("blur",winFocus);