$(".timeSeenInput").on("focusout keypress",function(event){
alert($(this).attr("id"))
})
我需要检测用户何时远离输入框或按下它。当我按下一个键时,上面的代码会触发两次。我如何让它为任一选项卡或焦点输出而不是两者都触发?
$(".timeSeenInput").on("focusout keypress",function(event){
alert($(this).attr("id"))
})
我需要检测用户何时远离输入框或按下它。当我按下一个键时,上面的代码会触发两次。我如何让它为任一选项卡或焦点输出而不是两者都触发?
你可以稍微去抖一下:
(function () {
var timeout;
$(".timeSeenInput").on("focusout keypress", function (event) {
if (!timeout) {
var self = this;
timeout = setTimeout(function () {
console.log(self.id);
timeout = null;
}, 0);
}
})
})();
这只会在tab key
按下并focusout
发生时触发:
$(".timeSeenInput").on("focusout keydown", function (e) {
var kc = e.which || e.keyCode;
if (kc === 9) {
alert('focusout with tab only');
}
});
两个事件都会产生 Tabbing out。您可以标记您的选项卡事件而不处理模糊:
var handleBlur = true;
$(".timeSeenInput").on("focusout keypress",function(event) {
if (event.type === 'keypress' && event.keyCode === TAB) {
alert($(this).attr("id"));
handleBlur = false;
return;
} else if (event.type === 'blur' && handleBlur) {
// Handle blur
}
handleBlur = true;
});
这就是blur
活动的目的。
小提琴:http: //jsfiddle.net/DPh6P/
$(".timeSeenInput").on("blur", function (event) {
alert($(this).attr("id"))
})