检测选择的更改方式

时间:2013-07-30 23:09:37

标签: jquery

我有一个选择字段,在keyup上有逻辑,并且更改,以执行操作。有没有办法检查它是如何改变的?

例如:我只希望在用鼠标更改逻辑时触发逻辑,或者按下Enter键。

对于那些寻找我的确切解决方案的人

http://aaronscherer.me/blog/2013/07/31/jquery-roll-to-next-input/

3 个答案:

答案 0 :(得分:3)

是 - 您可以侦听DOM中任何元素的任何事件。查看this fiddle作为起点。这是您可以收听的full list of mouse eventskeyboard events

HTML

<select class="my-select-1">
    <option value="1">First</options>
    <option value="2">Second</options>
</select>

<select class="my-select-2">
    <option value="1">A choice</options>
    <option value="2">Another choice</options>
</select>

的jQuery

$(document).ready(function() {

    $(".my-select-1").on("click", function(event){
        alert('Do something - click event');
    });

    $('.my-select-2').on('keypress', function(e) {
         var code = (e.keyCode ? e.keyCode : e.which);
         if(code == 13) { //Enter keycode
            alert('Do something - enter key press');
         }    
    });

});

在上面的例子中,$(".my-select-1)是选择器,它可以是任何东西(ID,元素类型等)。有关选择器的更多信息here。下一部分.on("mousedown"将一个或多个事件的事件处理函数附加到所选元素 - 在这种情况下只是一个事件mousedown。有关here的更多信息。

第二个例子,有点花哨,因为我们必须确定按下哪个键,但除此之外使用相同的概念。您可以在this post上找到关于此问题的非常冗长的讨论,但请注意,从on开始,bind是首选方法(不是{{1}})。

答案 1 :(得分:1)

如果您想知道事件的类型,只需使用type对象的event属性:

$('select').on('change keyup ...', function(event) {
   var type = event.type;
   // ...
}); 

答案 2 :(得分:0)

您可以使用onchange事件,如下所示:

$(document).on('change','#your_select',function() {
    //do something
})