我试图在所有情况下禁用订单页面上的退格按钮,除非文本区域或文本输入是活动元素,以防止用户意外退出订单。我让它在大多数浏览器中工作正常,但在 IE 中(在 IE9 中测试,常规模式和兼容模式)它仍然允许用户点击退格键并转到上一页。
这是代码:
$(document).keypress(function(e){
var activeNodeName=document.activeElement.nodeName;
var activeElType=document.activeElement.type;
if (e.keyCode==8 && activeNodeName != 'INPUT' && activeNodeName != 'TEXTAREA'){
return false;
} else {
if (e.keyCode==8 && activeNodeName=='INPUT' && activeElType != 'TEXT' && activeElType != 'text'){
return false;
}
}
});
关于我在这里做错了什么的任何建议?
谢谢!
原文由 TonyTheJet 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为你过于复杂了。与其检查活动元素,不如查找事件目标。这应该为您提供所需的信息。当没有可见字符时,最好使用
keydown
而不是keypress
。最后,最好使用e.preventDefault()
以获得更好的粒度。注意,我本可以反过来做,而不是一个空的
if
块和else
块中的所有代码,但我认为这更具可读性。