如何防止jquery中的tab?

时间:2016-11-01 02:12:56

标签: javascript jquery

我们可以在输入字段中停止阻止模糊或标记5秒。然后在5秒之后用户可以从一个字段切换到另一个字段。我使用offon功能但它不起作用。这是我的代码 http://jsfiddle.net/GV3YY/99/

$("input").off("blur");

setTimeout(function(){
$("input").on("blur");
},5000)

1 个答案:

答案 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;
    });
  }
});

全局变量仅用于示例,我建议不要这样做。

此外,如果您有大量输入,我建议使用事件委派,而不是为每个输入添加一个监听器。