javascript - 为什么modal弹出按空格键会按?我该如何预防?

标签 javascript jquery html twitter-bootstrap modal-dialog

我计划在单击空格键时执行一项操作。它确实发生了。

// when space bar is pressed
do-something; // Applied on the $(document).keypress..

但是,当我按空格键时,以及必须触发的事件/操作,模态加载/再次显示。为什么会这样呢?我试图阻止模态再次加载:

$('#goal').on('hidden.bs.modal',function() {
            $(document).focus(); // Get the button that triggered modal
                                 // out of focus                            

});

但是文档没有获得焦点,触发模态加载的按钮仍然处于焦点状态,直到我单击屏幕使文档重新获得焦点。如何防止模态在按空格键时再次加载?

我还尝试了触发模式的按钮上的 blur() 函数。但这没有帮助吗?

最佳答案

使用 $(document).focus(); 不会有任何效果,因为 document 不是一个可聚焦的元素,它实际上根本不是一个元素。尝试使用 document.activeElement 获取事件元素并对其进行模糊

document.activeElement.blur();

为此,您需要在模式关闭时监听事件 hidden.bs.modal,因为 Bootstrap 会在关闭时自动将焦点返回到按钮。

示例(Live):

$(document).on('hidden.bs.modal', function() {
    document.activeElement.blur();
});

或者,您可以将焦点设置到模型本身中的可聚焦元素(如果存在)。这可能会带来最愉快的用户体验。

关于javascript - 为什么modal弹出按空格键会按?我该如何预防?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29030212/

相关文章:

php - jQuery UI 将可排序列表保存到 PHP 数组

html - 无法在 div 旁边对齐按钮

javascript - React Native 中的 Woocommerce API per_page 最大限制

javascript - Socket.io,socket.set() 和套接字属性之间的区别?

javascript - Switch 语句中出现意外的标识符

html - 如何使用 Google Chrome 扩展程序向图像添加 HTML 链接?

php - 使用 Laravel 5,如何检测回车符并插入换行符

javascript - 在客户端将敏感数据存储在数组中是否危险

jquery - 获取 Bootstrap 元素在较小屏幕上的高度

javascript - 如何将此 jQuery 代码转换为纯 JavaScript?