我知道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()
操作的结果),但表单选择输入是抓住了。页面只是重新加载,好像什么都没有改变。
IT工作!但还有一个我忽略的部分,其他部分可能会发现有用。 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。有什么想法吗?
答案 0 :(得分:1)
这个 example 似乎在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>
也可以在blur
上使用,但这肯定取决于具体情况。
另外,请注意console.log
在IE中不起作用......这可能是您问题的一部分。正如@MikeMcCaughan在评论中所述,控制台应该与IE开发人员工具一起使用。
请参阅兼容性表here。看起来IE中可能还不支持form
属性。
答案 1 :(得分:-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版本,它对我有用,也来自Here on SO