【问题标题】:jQuery Detect How Change Was TriggeredjQuery 检测更改是如何触发的
【发布时间】:2016-07-20 05:17:24
【问题描述】:

如果我有一个选择更改事件,例如

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

我如何判断用户是通过 Tab 键和输入字母,还是通过单击其中一个选项来更改它?


基本上,我会尝试在下拉列表更改时延迟操作,但前提是这是由某人键入引起的。单击不应导致延迟,但有人可能会输入多个字母,所以我想在他们输入时给他们足够的时间,如果是这样的话。

【问题讨论】:

  • 你的意思是 .click() vs .keyPress()?
  • @j08691 不一定,因为我只是单击下拉菜单然后会触发单击事件,如果有人按下没有以该字母开头的选项的键,则不会更改发生了
  • @j08691 我应该注意的另一件事是,我还有其他东西也可以触发这个下拉列表的变化
  • .keyPress.click 创建全局布尔值,然后如果.on('change' 发生,您知道上述情况是否属实...这是由于...最后更改事件的两个布尔值都设置为 false..
  • 是的,@abc123 成功了

标签: jquery html-select onchange


【解决方案1】:
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;
});

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多