JavaScript/JQuery-检测移位+;带有blur()事件的选项卡
有一个输入,其中blur()事件是触发器,这个输入,我想检测是用Tab键、shift+Tab键还是单击out键触发的。只需按Tab键并单击out,我就可以进行检测。但是Shift+Tab键,我不能。我尝试过使用JavaScript/JQuery-检测移位+;带有blur()事件的选项卡,javascript,jquery,Javascript,Jquery,有一个输入,其中blur()事件是触发器,这个输入,我想检测是用Tab键、shift+Tab键还是单击out键触发的。只需按Tab键并单击out,我就可以进行检测。但是Shift+Tab键,我不能。我尝试过使用window.event.shiftKey,或者使用JQuery方法的on(),然后附加keyup,keydown,按键,查看是否先检测一个。但是,没有成功。我怎样才能检测到这个 我创建了这些代码,但没有人可以工作: 一, (这一次,我试图捕捉一个Shift代码和Tab代码之后的键。因为当
window.event.shiftKey
,或者使用JQuery方法的on(),然后附加keyup
,keydown
,按键
,查看是否先检测一个。但是,没有成功。我怎样才能检测到这个
我创建了这些代码,但没有人可以工作:
一,
keyup
、keydown
或keypress
Shift键。当按下Tab键时,它会自动模糊输入,因此,我尝试捕捉Tab键)
您不需要存储shift键。您可以使用e.shiftKey
$(“#地址”).on('focusout blur keyup keydown keypress',函数(e){
如果(e.type=='keypup'| | e.type=='keypdown'| | e.type=='keypress'){
/*
如果(键==16){
shift_键=真;
}
*/
}else if((e.type==“focusout”| | e.type==“blur”)&&e.key==9){
如果(如换档键){
document.getElementById('city').focus();
}
}
});代码>
地址
城市
也许你正在寻找这样的东西
var tabKey=false,
shiftKey=false;
$('#input')。关于('blur',函数(e){
if(tabKey){
if(移位键){
console.log('shift+tab'模糊);
}
否则{
console.log(“被标签模糊”);
}
}
否则{
log(“被鼠标模糊”);
}
tabKey=shiftKey=false;
});
$('#input')。关于('keydown',函数(e){
tabKey=e.which==9?true:false;
shiftKey=e.shiftKey;
});代码>
这可能是您想要的,它将检测用于离开输入的事件类型
$(“#z”).on('keydown blur',函数(e){
if(e.shiftKey&&e.keyCode==9){
console.log('shift tab')
返回false;
}否则如果(e.keyCode===9){
console.log('tab')
返回false;
}否则如果(e.type=='blur'){
console.log('mosueOUt')
}
});代码>
请发布您尝试更新我的问题的代码,同时按下多个键可能会有所帮助
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();
}
}
});
$("#address").on("keyup keydown keypress", function () {
var shift_key = key;
setTimeout(function(){
$("#address").on("blur focusout", function () {
var shift_key = key;
});
}, 400);
});