我正在尝试阻止退格按钮在每个浏览器中返回一页。现在我正在使用这段代码:
$(document).on("keydown", function (e) {
if (e.which === 8 && !$(e.target).is("input, textarea")) {
e.preventDefault();
}
});
除了打开选择字段下拉列表 之外,它对所有内容都可以正常工作,此事件将被忽略,反向空间无论如何都会返回一页。我怎么解决这个问题?谢谢你的回答。
答案 0 :(得分:2)
仅供参考,因为您的代码在IE和FF中正常运行,因此这是Google Chrome特有的。
如果你真的需要这个工作,你可以渲染一个假的下拉菜单,而不是以程序方式设置选择。
您可以将下拉列表的大小更改为打开时显示,如下所示: https://jsfiddle.net/yzr2cmqv/
<div clas="select-wrap">
<div class="fake-select"></div>
<select class="select">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
</div>
$(".fake-select").on("click", function () {
var numOfOpen = $("select.select option").size();
$(".select").attr("size", numOfOpen).css("overflow", "hidden");
$(this).hide();
});
$(".select").on("click", function () {
$(".select").attr("size", 1);
$(".fake-select").show();
});
除此之外我不认为你可以做任何事情,因为当下拉菜单打开时Chrome事件不会被触发。
答案 1 :(得分:-2)
只需将select
标记添加到您的选择器:
$(document).on("keydown", function (e) {
if (e.which === 8 && !$(e.target).is("input, textarea, select")) {
e.preventDefault();
}
});
答案 2 :(得分:-2)
如果你添加
,你现在必须立即在$(选择)上检查keydown事件console.log(e.which)
console.log(e.target)
您会注意到,当您选择下拉列表处于活动状态时单击并按下键盘时,您将无法获得keydown事件。
这将为您的
$(document).on("keydown", $('select'), function (e) {
if (e.which === 8) {
e.preventDefault();
}
});