Javascript 如何一次只触发一个事件
我需要检测用户何时远离输入框或何时远离输入框。Javascript 如何一次只触发一个事件,javascript,jquery,Javascript,Jquery,我需要检测用户何时远离输入框或何时远离输入框。 当我按键时,上面的代码会触发两次。如何使tab或focusout触发,而不是两者都触发?两个事件都会生成tab或focusout。您可以标记跳出事件而不处理模糊: $(".timeSeenInput").on("focusout keypress",function(event){ alert($(this).attr("id")) }) 这就是模糊事件的作用 小提琴: 这仅在按下tab键并且发生focusout时才会触发
当我按键时,上面的代码会触发两次。如何使tab或focusout触发,而不是两者都触发?两个事件都会生成tab或focusout。您可以标记跳出事件而不处理模糊:
$(".timeSeenInput").on("focusout keypress",function(event){
alert($(this).attr("id"))
})
这就是模糊事件的作用 小提琴:
这仅在按下
tab键
并且发生focusout
时才会触发:
$(".timeSeenInput").on("blur", function (event) {
alert($(this).attr("id"))
})
你可以稍微减轻它的重量:
blur
这是您所需要的吗?您真的希望每次按下键都使用它吗?这将在用户输入时触发。@Jai为什么模糊?与focusout的行为相同,但不包括bubbling@roasted啊,我不知道,谢谢。@Jai-how,事实上我没有看到你在问一个问题“?”以及OP是否也想在按键上触发事件?@broading“我需要检测用户何时远离输入框或何时远离输入框”。在我看来,他似乎想检测用户何时离开输入。@MattHarrison我理解OP的问题,他不想在按TAB键时触发这两个事件,但我应该承认,我看不到使用这两个事件的真正原因。在这种情况下,只有keypress事件应该足够或仅模糊。
$(".timeSeenInput").on("blur", function (event) {
alert($(this).attr("id"))
})
$(".timeSeenInput").on("focusout keydown", function (e) {
var kc = e.which || e.keyCode;
if (kc === 9) {
alert('focusout with tab only');
}
});
(function () {
var timeout;
$(".timeSeenInput").on("focusout keypress", function (event) {
if (!timeout) {
var self = this;
timeout = setTimeout(function () {
console.log(self.id);
timeout = null;
}, 0);
}
})
})();