jQuery 检测变化是如何触发的

jQuery Detect How Change Was Triggered

如果我有一个 select on change 事件,比如

$('#select').on('change', function (e) {
    //do things
});

我如何判断用户是通过跳转到它并键入字母,还是通过单击它的选项之一来更改它?


基本上,我试图在下拉菜单发生变化时延迟操作,但只有在有人输入时才这样做。单击不应该导致延迟,但有人可能会输入多个字母,所以我想在他们输入时给他们足够的时间,如果是这样的话。

var keyPressed = false;
var clicked = false;

$('#select').on('click', function() {
  clicked = true;
})
.on('keyPress', function() {
  keyPressed = true;
})
.on('change', function (e) {
  if (keyPressed) {
    //do things
  }

  keyPressed = false;
  clicked = false;
});