jQuery 窗口绑定(bind)焦点

标签 jquery

我有这个:

$(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/

相关文章:

javascript - 所有子菜单下拉菜单从顶部显示

jquery - Spring Boot - 使用 ModelAndView 返回 ResponseEntity

jquery - 如果 jQuery 脚本是在所有页面 HTML 之后加载的,那么它们还需要 $(document).ready 吗?

javascript - 单击并删除/添加具有多个按钮的多个类

jquery - 如何在 jQuery 中使用 'this' ?

javascript - 如何定义一个函数来修改 Ajax 请求上提交到服务器的数据

javascript - 在滚动页面上淡出 - 背景 div

javascript - 替代元素的加载

javascript - 显示图标的日期选择器单击并用所选日期填充文本框

javascript - 使用 jQuery 从表创建数组