当SELECT聚焦并打开时,防止退格导航到上一页

时间:2016-02-25 21:41:07

标签: javascript jquery browser cross-browser

在我赶紧告诉我先搜索之前......我试过了。没有任何运气,尝试多种解决方案后。

这个链接看起来好像应该有效,但事实并非如此。 Stackoverflow link to preventing backspace

我尝试使用该脚本。我也尝试自己捕捉密钥(使用keyup, keydown, keypress)和returning false, preventDefault, stopPropagation等。似乎没什么用。

捕捉关键事件确实会阻止它在任何其他元素聚焦时或仅仅聚焦身体时向后导航。这有帮助,但不能解决我的问题。

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

如果用户选择了一个选项,然后按退格键,则它不会导航回来,但由于某种原因,如果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

1 个答案:

答案 0 :(得分:0)

我有类似的问题;我不确定原因,但是$(文档)选择器没有捕获选择元素。 尝试('*').on('keydown', function(e){...});,这对我有用。