如何知道哪个事件在jQuery中导致了模糊事件?
使用click or tab
等触发模糊事件。我如何知道此模糊事件是由点击或标签引起的?
答案 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键。我必须检查点击情况,因为尝试在选项卡顺序流之外的表单中单击/聚焦于新位置仍会触发选项卡操作,这将完全导致您尝试单击的内容错误。