jQuery窗口绑定焦点

时间:2011-05-17 19:14:05

标签: jquery

我有这个:

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

但它导致“过多的递归”。所以我改成了这个:

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

但这当然只有在窗口第一次获得焦点时才有效。

问:如何编写它以便每次用户切换到另一个屏幕并返回到此屏幕时, myName 都有焦点?

2 个答案:

答案 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);