我知道 jQuery 的change()
方法不会触发 IE9 中的选择和单选输入。但是,我发现的所有解决方法都不适合我。
这是适用于所有体面浏览器的代码:
$("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"
之外放置一个表单元素。<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。有任何想法吗?