即使使用了 e.preventdefault(),在显示警报窗口后退格在 Firefox 中工作
Posted
技术标签:
【中文标题】即使使用了 e.preventdefault(),在显示警报窗口后退格在 Firefox 中工作【英文标题】:backspace working in firefox after the alert windows is shown even if e.preventdefault() is used 【发布时间】:2017-03-24 07:44:39 【问题描述】:我需要为我的项目中的所有网页禁用退格键,我已经使用 e.prevent 默认方法完成了它,但是当显示警报时,e.prevent 默认值不起作用,网页只是转到上一页时按退格键。有什么解决办法吗?
if(input)
alert("wrong input");
function disableBackSpace(e)
var doPrevent = false;
if (e.keyCode === 8)
var d = e.srcElement || e.target;
if ((d.tagName.toUpperCase() === 'INPUT' &&
(
d.type.toUpperCase() === 'TEXT' ||
d.type.toUpperCase() === 'PASSWORD' ||
d.type.toUpperCase() === 'FILE' ||
d.type.toUpperCase() === 'SEARCH' ||
d.type.toUpperCase() === 'EMAIL' ||
d.type.toUpperCase() === 'NUMBER' ||
d.type.toUpperCase() === 'DATE' )
) ||
d.tagName.toUpperCase() === 'TEXTAREA')
doPrevent = d.readOnly || d.disabled;
else
doPrevent = true;
if (doPrevent)
e.preventDefault();
每次我按退格键时都会调用上述方法,但是当我在警报窗口中时,这不起作用。基本上,上面的退格代码作为所有网页的 jsp 页面包含在内。
【问题讨论】:
您说的是哪个警报?显示一些代码 How can I disabling backspace key press on all browsers?的可能重复 非 jQuery 版本,作为副本可能更有用:How to capture a backspace on the onkeydown event 上面提到的代码只有当焦点在你正在查看的网页上时才有效,有人请显示一个警告窗口,并且当我在显示警告时按退格键时也阻止退格 【参考方案1】:在$(document).keydown
上添加您的阻止退格代码。
它将出现在整个文档上,无论是否打开任何警报或弹出窗口。
$(document).keydown(function(e)
if (e.keyCode == 8) alert('Not Allowed');
);
JsFiddle Demo
【讨论】:
在问题或标签中没有提到 jQuery。 OP 说明:除非您包含 jQuery 库,否则这将不起作用,您可能想要也可能不想这样做 同样的结果不工作,我已经把这个脚本放在脚本标签下的jsp页面上 即使他上面提到的代码也不起作用,删除警告窗口并输入e.preventDefault()。如果我们按退格键仍然页面会返回以上是关于即使使用了 e.preventdefault(),在显示警报窗口后退格在 Firefox 中工作的主要内容,如果未能解决你的问题,请参考以下文章
e.preventDefault() 方法到底做了啥? [复制]
e.preventDefault 不适用于 laravel 5.7