javascript - 当 SELECT 获得焦点并打开时,防止退格键导航到上一页

标签 javascript jquery browser cross-browser

在我急于告诉我先搜索之前..我已经尝试过了。没有任何运气,并且在尝试了多种解决方案之后。

此链接看起来应该有效,但实际上无效。 Stackoverflow link to preventing backspace

我尝试使用该脚本。我还尝试自己捕获按键(使用keyup、keydown、keypress)并返回 false、preventDefault、stopPropagation 等。似乎没有任何效果。

捕获关键事件确实可以防止它在任何其他元素获得焦点或只是主体获得焦点时向后导航。这有帮助,但不能解决我的问题。

我找到了另一个使用纯 JavaScript 而不使用 jquery 的解决方案,它具有相同的效果(当选择焦点并打开时仍然导航)。

如果用户选择一个选项,然后按退格键,它不会向后导航,但由于某种原因,如果 SELECT 仍然打开,它会引导他们离开页面。

我考虑过的一个解决方案是使用 body onunload 事件来提示用户是否想要离开页面,但是当他们提交表单或单击链接时我必须处理该问题在页面上这不是一个理想的解决方案。

当前代码(许多不同的尝试):

$(document).on('keyup keydown keypress', function(e){
    var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
    if(key == 8){
        console.log('backspace');
        e.preventDefault();
        e.stopPropagation();
        return false;
    } else {
        console.log('keypress');
    }
});

真诚地感谢任何帮助。谢谢。

[编辑]我使用的是 Google Chrome 版本 48.0.2564.116 m

最佳答案

我也遇到过类似的问题;我不知道为什么,但 $(document) 选择器没有捕获选择元素。 尝试 ('*').on('keydown', function(e){...});,这对我有用。

关于javascript - 当 SELECT 获得焦点并打开时,防止退格键导航到上一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35638927/

相关文章:

php - 如何执行ajax函数onbeforeunload?

javascript - jQuery 脚本仅在第二个事件上执行

javascript - 在 Vue 中离开页面之前如何警告用户未保存的更改

javascript - 为什么js会从一个特定格式的Date对象中减去一天?

javascript - 使用键元素在 json 对象中查找值对

javascript - 为什么浏览器按以下方式排序

browser - 优化 HTTP 请求/浏览器限制请求?

javascript - 状态的功能被另一个状态破坏了?

jquery - 使用 jQuery .empty() 清空选择选项后,您可以恢复它们吗?

html - 在浏览器中检测 URI 方案支持