如何检测仍然具有焦点的HTML select的所有更改/点击事件?

3
我如何可靠地检测所有导致HTML select值改变的事件,同时该元素仍然具有焦点?
对于常规鼠标输入,clickchange事件均可正常工作。但是,对于键盘输入(以及使用滚轮的鼠标输入),change事件直到失去焦点才会触发。我通过使用keyup事件来解决键盘更改问题(并忽略鼠标滚轮问题),但发现我的代码中充斥着很多这样的内容:
$(".my-select").keyup(handleSelect).change(handleSelect);

function handleSelect() {
    var $this = $(this);

    // don't process keyup events that don't result in change
    if ($this.data('old-val') == $this.val()) { return; }
    $this.data('old-val', $this.val());

    // ... other stuff ...
}

有没有更简单的模式/方法可以解决这个问题(使用jQuery或纯JavaScript)?
2个回答

1

“change”事件设计上只有在元素失去焦点时才触发。你正在做的可能是解决这个问题的唯一方法。你也可以查看selectedIndex和value属性。


0
正如Diodeus所说,当元素失去焦点时,会触发“change”事件。但是您可以检查按下的键是否为回车键,然后调用您的函数。我认为几乎没有人使用鼠标滚轮来更改选择框的值...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接