我们可以在输入字段中停止阻止模糊或标记5秒。然后在5秒之后用户可以从一个字段切换到另一个字段。我使用off
和on
功能但它不起作用。这是我的代码
http://jsfiddle.net/GV3YY/99/
$("input").off("blur");
setTimeout(function(){
$("input").on("blur");
},5000)
答案 0 :(得分:0)
你需要"锁定"他们聚焦时的输入并使用setTimeout来解锁"它在5秒后。一个天真的实现可能看起来像这样:https://jsfiddle.net/my7wk6gj/2/
更新:现在伪通过点击防止模糊。模糊仍然会发生,但焦点将返回到原始输入,直到5秒钟过去。我无法让event.stopImmediatePropagation
为模糊而工作,所以这是下一个最好的事情......
var lockInput = false;
var focusTarget = null;
var lockTimeout = null;
$('input').on('focus', function (e) {
if (lockTimeout) {
return;
}
lockInput = true;
lockTimeout = setTimeout(function () { lockInput = false; lockTimeout = null }, 5000)
}).on('keydown', function (e) {
if (e.keyCode === 9 && lockInput) {
e.preventDefault();
return false;
}
}).on('blur', function (e) {
console.log('blur')
if (lockInput && focusTarget === null) {
focusTarget = e.target;
setTimeout(function () {
focusTarget.focus();
focusTarget = null;
});
}
});
全局变量仅用于示例,我建议不要这样做。
此外,如果您有大量输入,我建议使用事件委派,而不是为每个输入添加一个监听器。