4

IE9 では、jQuery のchange()メソッドが 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 は、タグform="form_id"の外側にフォーム要素を配置できるHTML5 属性をサポートしていません。<form>そのため、イベントをバインドできたら、値をフォームに追加する必要もありました。

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 では機能しません。何か案は?

4

2 に答える 2

1

このは、IE9 の jsfiddle で問題なく動作するように見えました。

jQuery

$("#test").on("change", function(){
    alert("test changed to: " + this.value)
})​;

HTML

<select id="test">
  <option>1</option>
  <option>2</option>
  <option>3</option>
</select>

潜在的に on を使用するオプションもありますがblur、それは特定の状況に依存します。

また、これはIEconsole.logでは機能しないことにご注意ください。これは問題の一部である可能性があります。@MikeMcCaughan がコメントで述べているように、コンソールは IE 開発者ツールで動作する必要があります。

こちらの適合表をご覧ください。このform属性は IE ではまだサポートされていないようです。

于 2012-10-19T21:05:37.757 に答える
-1

変えてみましたか

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

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

または .on() または.live () を使用して、jquery のバージョンに応じて、それは私のために働いていました。

于 2012-10-19T21:13:39.847 に答える