请注意,在 Google 主页上,不关注任何元素时,按 BACKSPACE 会将焦点放在搜索工具栏中,而不是向后导航。
我怎样才能做到这一点?
我的应用程序中的用户一直遇到这个问题。他们没有关注任何元素并点击 BACKSPACE 将他们扔出应用程序。
请注意,在 Google 主页上,不关注任何元素时,按 BACKSPACE 会将焦点放在搜索工具栏中,而不是向后导航。
我怎样才能做到这一点?
我的应用程序中的用户一直遇到这个问题。他们没有关注任何元素并点击 BACKSPACE 将他们扔出应用程序。
keydown
如果我们正在处理 a textarea
or之外的退格键,我会将事件处理程序绑定到并阻止该事件的默认操作input
:
$(document).on("keydown", function (e) {
if (e.which === 8 && !$(e.target).is("input, textarea")) {
e.preventDefault();
}
});
我真的很喜欢安德鲁·惠特克的回答。但是,当专注于只读、单选或复选框输入字段时,它仍会向后导航,并且不允许在 contentEditable 元素上使用退格键,因此我添加了一些细微的修改。归功于安德鲁·惠特克。
$(document).on("keydown", function (e) {
if (e.which === 8 && !$(e.target).is("input:not([readonly]):not([type=radio]):not([type=checkbox]), textarea, [contentEditable], [contentEditable=true]")) {
e.preventDefault();
}
});
目前似乎有必要拥有 HTML 中的每个变体 [contentEditable],因为 [contentEditable] != [contentEditable=true]。
谷歌这样做的方式有点酷。当您按退格键时,它们会聚焦文本字段,防止用户返回!
你可以试试同样的:
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<input id="target" type="text" />
<script type="text/javascript">
$(document).keydown(function(e) { if (e.keyCode == 8) $('#target').focus(); });
</script>
这是一个在 IE、Chrome 和 Firefox 上测试的简单解决方案。
$(document).on("keydown", function (event) {
// Chrome & Firefox || Internet Explorer
if (document.activeElement === document.body || document.activeElement === document.body.parentElement) {
// SPACE (32) o BACKSPACE (8)
if (event.keyCode === 32 || event.keyCode === 8) {
event.preventDefault();
}
}});
这是旧的,但这些答案仍然允许您在关注单选按钮时退格和导航。您还需要过滤输入类型。归功于以上所有答案:
$(document).on("keydown", function (e) {
if (e.which === 8 && !$(e.target).is("input[type='text']:not([readonly]), textarea")) {
e.preventDefault();
}
});