检测焦点事件是否由用户/浏览器或jQuery

时间:2017-10-13 09:33:32

标签: javascript jquery jquery-events

我正在尝试检测焦点事件是否由用户触发(手动)。 当谈到click事件时,可以检查处理程序方法中是否存在event.originalEvent

typeof event.originalEvent != "undefined"

不幸的是,焦点事件的表现不同。 请查看example

尝试点击第一个<input>,然后点击第二个输入的“触发点击”按钮,您会看到click undefined,这意味着event.originalEvent不存在。 然后尝试点击第一个<input>,然后点击第二个输入的“触发焦点”按钮,这次会看到focus objectevent.originalEvent

  • 如何检测焦点事件是否由用户触发(非编程)?

1 个答案:

答案 0 :(得分:2)

应用function format(state) { if (!state.id) return state.text; // optgroup return "<div class='box'></div>" + state.text; } $("#states").select2({ placeholder: "Select a state", allowClear: true, formatResult: format, formatSelection: format }); 事件以检查其是否为用户操作:

&#13;
&#13;
mousedown
&#13;
$(document).ready(function() {

  var isUserClick = false;
  $("input").mousedown(function() {
    isUserClick = true;
  });
  $("input").on("click focus blur", function(event) {
    console.log(event.type, typeof event.originalEvent, isUserClick ? 'user' : 'script');
    setTimeout(function() {
      isUserClick = false;
    }, 200);
  });
  $("button").click(function() {
    $("input." + $(this).attr("class")).trigger($(this).data("event"));
  });
});
&#13;
&#13;
&#13;