【发布时间】:2012-10-10 13:09:42
【问题描述】:
我知道 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。有什么想法吗?
【问题讨论】:
-
有什么特殊原因不能使用 click()?
-
@Jason 我不能使用点击,因为它是一个选择下拉菜单。因此,在用户做出新选择之前,该事件会触发并提交表单。
-
我的错,我在你的问题中看到了“无线电输入”,似乎忽略了选择。
-
如果您使用的是 1.5 之前的 jQuery 版本,那么这就是您的问题:bugs.jquery.com/ticket/8485
标签: javascript jquery cross-browser internet-explorer-9