如何知道模糊的原因?

时间:2011-06-20 12:39:29

标签: javascript jquery

如何知道哪个事件在jQuery中导致了模糊事件?

使用click or tab等触发模糊事件。我如何知道此模糊事件是由点击或标签引起的?

2 个答案:

答案 0 :(得分:5)

如果您尝试根据使用的方法执行两项不同的操作,请绑定处理程序以侦听.click()和.keyup(),然后检查键代码

var k = (window.event) ? event.keyCode : e.keyCode;

如果您需要

,可按此顺序排列
$(document).bind("click keyup", function(){
   //check keycode
   var e = (window.event);
   var k = (e)?event.keyCode:e.keyCode;
   if(k==9){
      //tab code
   }else if(e.type=='click'){
      //click code
   }

});

答案 1 :(得分:1)

要能够处理模糊处理程序中的输入类型,您将需要改用mousedown和keydown事件。这是由于事件的顺序。当您将文本输入作为焦点并单击页面上的其他位置时,顺序将为:鼠标向下,输入模糊,鼠标向上,单击。与选项卡类似,它是键盘按下,输入模糊,键盘按下。您需要将“模糊操作”存储在外部变量中,以便模糊处理程序可以访问它。

var _lastAction = "somethingelse";
$(document).bind("mousedown keydown", function () {
        //check keycode
        var e = (window.event);
        var k = (e) ? event.keyCode : e.keyCode;
        if (k == 9) {
            //tab code
            _lastAction = "tab";            
        } else if (e.type == 'mousedown') {
            //click code
            _lastAction = "click";            
        } else {
            _lastAction = "somethingelse;
        }

});

然后,您可以在模糊事件处理程序中引用该变量。

在按下Tab键时,我不得不使用它来以复杂的动态形式保持正确的Tab键。我必须检查点击情况,因为尝试在选项卡顺序流之外的表单中单击/聚焦于新位置仍会触发选项卡操作,这将完全导致您尝试单击的内容错误。