JavaScript/JQuery-检测移位+;带有blur()事件的选项卡

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代码之后的键。因为当

有一个输入,其中blur()事件是触发器,这个输入,我想检测是用Tab键、shift+Tab键还是单击out键触发的。只需按Tab键并单击out,我就可以进行检测。但是Shift+Tab键,我不能。我尝试过使用
window.event.shiftKey
,或者使用JQuery方法的on(),然后附加
keyup
keydown
按键
,查看是否先检测一个。但是,没有成功。我怎样才能检测到这个

我创建了这些代码,但没有人可以工作:

一,

  • (这一次,我试图捕捉一个Shift代码和Tab代码之后的键。因为当触发按键事件时,他不会模糊输入,因此,我尝试捕捉
    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);
    });