Javascript IE9中选择输入的change()事件

Javascript IE9中选择输入的change()事件,javascript,jquery,cross-browser,internet-explorer-9,Javascript,Jquery,Cross Browser,Internet Explorer 9,我知道jQuery的change方法不会在IE9中为select和radio输入触发。然而,我发现的所有解决办法都不适合我 以下是适用于所有优秀浏览器的代码: $("select#orderby").change( function(e){ console.log("order"); $("#candidate-filters").submit(); }); 以下是我在IE9中看到的人们为解决这个问题所做的一个版本: $("select#

我知道jQuery的change方法不会在IE9中为select和radio输入触发。然而,我发现的所有解决办法都不适合我

以下是适用于所有优秀浏览器的代码:

    $("select#orderby").change( function(e){
        console.log("order");
        $("#candidate-filters").submit();
    });
以下是我在IE9中看到的人们为解决这个问题所做的一个版本:

    $("select#orderby").bind( ($.browser.msie)? 'propertychange' : 'change', function(e){
        console.log("order");
        $("#candidate-filters").submit();
    });
当我尝试它时,它不起作用。控制台中没有错误。只是什么都没发生。我做错了什么

编辑:当我切换到.on方法时,我可能会由于.submit操作而导致页面重新加载,但表单选择输入不会被捕获。页面只需重新加载,就好像什么都没有更改一样

它起作用了!但还有一部分我忽略了,其他人可能会觉得有用。IE不支持HTML5 form=form_id属性,该属性允许将表单元素放置在标记之外。因此,一旦我能够绑定事件,我还必须将值附加到表单中:

if ($.browser.msie) {
    $("select#orderby").bind( "propertychange", function(e){
        //console.log("order");
        var update = $(this).val();
        $("#candidate-filters").append('<input type="hidden" name="orderby" value="'+ update +'" /> ');
        $("#candidate-filters").submit();
    });
} else {
    $("select#orderby").change( function(e){
        console.log("order");
        $("#candidate-filters").submit();
    });
}
我说得太快了: 上面的代码仅在IE8中有效,而在IE9中无效。有什么想法吗?

在JSFIDLE for IE9中,这似乎对我很有用:

jQuery

HTML

也可以选择在模糊上使用,但这取决于具体情况

另外,请注意console.log在IE中不起作用,这可能是您的问题的一部分。正如@MikeMcCaughan在评论中指出的,控制台应该与IEs开发人员工具配合使用

请参阅兼容性表。看起来IE中可能还不支持表单属性

你试过换衣服吗

   $("select#orderby").change( function(e){
        console.log("order");
        $("#candidate-filters").submit();
    });


或者使用.on或.live,取决于你的jquery版本,这对我来说是有效的,它也是来自

有什么特别的原因你不能使用click吗?@Jason我不能使用click,因为它是一个select下拉列表。因此,事件会在用户做出新选择之前触发并提交表单。糟糕,我在您的问题中看到了无线电输入,似乎忽略了选择。如果您使用的是早于1.5的jQuery版本,那么这就是您的问题:注意:console.log在IE9中工作正常,如果您打开了F12开发人员工具。这可能仍然是您的问题的一部分,但只是为了澄清一下。我尝试了使用console.log和不使用console.log。页面将重新加载,但在提交表单时不会捕获新值。这个select元素在元素之外可能是相关的,但是使用form=属性来关联它,一个类似HTML5的元素。感谢@MikeMcCaughan的澄清。我不使用IE,所以我很感谢你的评论。@Emerson,这有点帮助。您的问题似乎是兼容性问题。请看我的更新上面。另外,不管是谁投了幻影否决票,请告诉我,我会做出任何必要的改变。谢谢。但是点击事件对于选择输入不起作用。一旦下拉列表打开,表单就会被选中。
<select id="test">
  <option>1</option>
  <option>2</option>
  <option>3</option>
</select>
   $("select#orderby").change( function(e){
        console.log("order");
        $("#candidate-filters").submit();
    });
   $("select#orderby").click( function(e){
        console.log("order");
        $("#candidate-filters").submit();
    });