<select>和firefox上的jQuery change()

Chr*_*len 19 javascript firefox jquery drop-down-menu

我有一个下拉列表,当它改变时触发ajax调用:

$('.travel-to').change(function(){  
    $.ajax({
        type: "GET",
        url: "/inc/rates/rates-viewer.php",
        data: "shtech=y&c_name="+escape($(this).val()),
        success: function(html){
            $(".rates-viewer").html(html);
            $(".rates-viewer tr.numbers td").css({ opacity: 0 }).fadeTo("slow",1);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

我的问题是,在Firefox中,使用上/下光标键循环显示下拉选项,不会触发js onChange()事件.它在IE中没问题.

如何让Firefox看到上/下游标onChange?我可以做一个/或在事件上,使一个onChange或一个按键触发相同的事情?

谢谢.

Dan*_*Lew 26

你实际上正在利用IE中的一个错误.Firefox正确支持onChange,因为它不应该在浏览器失去select字段的焦点之前触发.(事实上我昨天回答了一个关于这个问题的问题.)使用onChange选择一个实际上有点危险,特别是因为键盘只有用户才能跳过某些选项.(最重要的是,鼠标滚轮似乎通过多个答案旋转,但实际上它会在IE上传递的每个条目触发onChange.)

如果你真的想要在有人按下或按下时触发事件,我会挂钩onKeyPress或onKeyDown事件,只要按下"向上"或"向下"键就会触发.

  • 发生在我身上的情况很好."更改"事件在Safari,Chrome和IE中正确触发.看起来它变成了这个事件的标准功能,当元素被改变时触发,而不是在它失去焦点之后; 这就是'焦点'的用途.同样,这可能最近才被引入现代浏览器,无论是FF应该采用这种改变. (3认同)

Mo.*_*Mo. 8

更好的选择是用于.on()将函数绑定为多个事件

$("#member").on("change keyup", function(){
    -----
});
Run Code Online (Sandbox Code Playgroud)

  • 爱它.Sane跨浏览器行为 (2认同)
  • 太棒了,这需要是最好的答案.谢谢. (2认同)