jquery select dropdown在打开时会忽略keydown事件?
我试图阻止退格按钮在每个浏览器中返回一页。 现在我正在使用这段代码:
$(document).on("keydown", function (e) { if (e.which === 8 && !$(e.target).is("input, textarea")) { e.preventDefault(); } });
除了打开选择字段下拉列表时,它才能正常工作,此事件将被忽略,退格区无论如何都会返回一页。 我怎么解决这个问题? 谢谢您的回答。
仅供参考,因为您的代码在IE和FF中正常运行,因此这是Google Chrome特有的。
如果你真的需要这个工作,你可以渲染一个虚假的下拉菜单,而不是以程序方式设置选择。
您可以将下拉列表的大小更改为打开时显示,如下所示: https : //jsfiddle.net/yzr2cmqv/
$(".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事件不会触发。
只需将select
标记添加到select
器:
$(document).on("keydown", function (e) { if (e.which === 8 && !$(e.target).is("input, textarea, select")) { e.preventDefault(); } });
如果添加,您必须立即在$(select)上检查keydown事件
console.log(e.which) console.log(e.target)
您会注意到,当您选择下拉列表处于活动状态时单击并按下键盘时,您将无法获得keydown事件。
这将使你的
$(document).on("keydown", $('select'), function (e) { if (e.which === 8) { e.preventDefault(); } });