代码之家  ›  专栏  ›  技术社区  ›  Marc Stober

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

  •  3
  • Marc Stober  · 技术社区  · 15 年前

    select 要改变,而那个元素仍然是焦点?

    对于常规的鼠标输入,或者 click 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 回复  |  直到 15 年前
        1
  •  1
  •   Diodeus - James MacFarlane    15 年前

    “改变”在元素失去焦点之前不会触发。你所做的可能是解决这个问题的唯一方法。您还可以查看selectedIndex和value。

        2
  •  0
  •   Flo Edelmann    15 年前

    正如迪奥多斯所说 change 当元素失去焦点时激发事件。但您可以检查按下的键是否为回车键,然后调用您的函数。我想几乎没有人用鼠标滚轮来改变选择框的值。。。