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