[英]Disable backward navigation when pressing backspace, allow backspace in fields
[英]Disable backspace navigation in browser
有谁知道如何禁用使用键盘上的“退格”键导航到上一页的功能?
现在,我有一个发票类型的Web应用程序,如果用户(在Mac上)按下退格键以删除表单字段中的元素,则在到达输入项的末尾后,如果他们再次按下退格键,它将移至先前浏览过的页面,使他们丢失了所输入应用程序的数据。
window.onkeydown = function(e) {
if (e.keyCode == 8 && e.target == document.body)
e.preventDefault();
}
说明:退格键的键码为8。调用“ preventDefault”意味着该事件不会导致按下退格键的默认行为(即,向后导航页面)。 仅当事件的目标是文档的正文时,才会发生此行为。
编辑: jsfiddle示例
@Sam答案的缺点是,如果您单击HTML元素(例如表格),则Backspace键仍会使您返回。 仅当您单击没有任何HTML元素的“空白”时,它才起作用。
我调整了Sam的答案,并从该答案中获取了代码以创建此解决方案。 它并没有涵盖所有的极端情况,但是对于我的用例来说已经足够了。
function disableBackspaceNavigation() {
window.onkeydown = function(e) {
if (e.keyCode == 8 && !isTextBox(e.target)) e.preventDefault();
}
}
function isTextBox(element) {
var tagName = element.tagName.toLowerCase();
if (tagName !== "input") return false;
var typeAttr = element.getAttribute('type').toLowerCase();
return typeAttr === 'text';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.