javascript - JavaScript/JQuery - 使用 blur() 事件检测 Shift + Tab
问题描述
有一个输入触发了 blur() 事件,我想检测这个输入是否被 Tab 键、shift+tab 键或点击触发。只用 Tab 键检测并单击,我已经得到了。但是 Shift+Tab 键,我不能。我尝试使用 JQuery 方法的 on() 进行检测,window.event.shiftKey
并附加keyup
,以查看是否先检测到另一个。但是,没有成功。我怎样才能检测到这个?keydown
keypress
我构建了这些代码,但没有人工作:
1.
var shift_key; var key = window.event.keyCode;
$("#address").on('focusout blur keyup keydown keypress',function(e){
if(e.type == 'keyup' || e.type == 'keydown' || e.type == 'keypress'){
if(key == 16){
shift_key = true;
}
}else if((e.type == 'focusout' || e.type == 'blur') && key == 9){
if(shift_key == true){
document.getElementById('city').focus();
}
}
});
(这一个,我试图抓住一个 Shift 代码和 Tab 代码之后。因为当触发一个关键事件时,他不会模糊输入,所以,我试图抓住
keyup
,keydown
或keypress
Shift 键。当Tab 被按下,它会自动模糊输入,所以,我试图抓住 Tab 键)$("#address").on("keyup keydown keypress", function () { var shift_key = key; setTimeout(function(){ $("#address").on("blur focusout", function () { var shift_key = key; }); }, 400); });
解决方案
这可能是您想要检测用于离开输入的事件类型。
$("#z").on('keydown blur', function(e) {
if (e.shiftKey && e.keyCode === 9) {
console.log('shift tab')
return false;
} else if (e.keyCode === 9) {
console.log('tab')
return false;
} else if(e.type == 'blur') {
console.log('mosueOUt')
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="z" />
推荐阅读
- java - 自定义字符串属性打破 Android Studio 的 ConstraintLayout 预览
- linux - Linux Bash Shell 脚本
- kubernetes - 如何从 GCP 恢复已删除的 GKE 集群
- arrays - 如果最长的表的长度大于或等于 5,如何将每个表的长度更改为等于最长的表?
- javascript - 如何在 JavaScript Selenium 中使用 jQuery 取消挂起的请求?
- node.js - Google Firebase 功能向物联网设备发送配置
- c - C 打印一个泛型类型向量
- php - MYSQLI 面向对象,我的脚本有什么问题?
- react-native - 任何关于不使用 EXPO 的纯 React Native 的文档?
- python - python matplotlib 自定义图例