我正在尝试检测焦点事件是否由用户触发(手动)。
当谈到click
事件时,可以检查处理程序方法中是否存在event.originalEvent
:
typeof event.originalEvent != "undefined"
不幸的是,焦点事件的表现不同。 请查看example。
尝试点击第一个<input>
,然后点击第二个输入的“触发点击”按钮,您会看到click undefined
,这意味着event.originalEvent
不存在。
然后尝试点击第一个<input>
,然后点击第二个输入的“触发焦点”按钮,这次会看到focus object
,event.originalEvent
。
答案 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
});
事件以检查其是否为用户操作:
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;