selected.js在IE7中的页面加载时打开下拉列表

时间:2011-10-05 14:30:44

标签: jquery internet-explorer-7

我在我的一个表单上使用了jQuery选择的插件(http://harvesthq.github.com/chosen/),一切都很顺利。 然而,当我用IE7点击页面时,有时候会打开下拉菜单,好像他们已经获得了keybord焦点。 我想确保它们在用户点击之前永远不会打开,所以尝试了各种修复程序,例如在页面加载时从选择中删除焦点:

$('#mySelect').trigger('blur');
$('#someOtherInput').focus();
$('body').trigger('click');

及其变化,但似乎没有任何帮助。 我不知道.chosen()是否可以接受回调,如果是,那么我会将代码放在那里,但到目前为止,另一种可能性是这些行在选择完成之前执行它已经完成。

所以,没有超时(我真的不想做,但如果这是唯一的解决方案),有没有人知道如何阻止这种情况发生?

3 个答案:

答案 0 :(得分:3)

我不确定为什么这不起作用,但我找到了解决问题的方法。

这一行:

$('#mySelect').chosen();

在我的脚本的顶部,使用了其他插件的几百行代码,其中也包含输入内容。

将此行移至脚本的末尾修复此问题 - 我猜测某些内容必须与此相冲突或更改属性,而这正在更改相同的属性 - 但我无法猜测哪个插件或哪里它正在发生。

这有效,但我对问题的实际情况并不明智:(

更新: 今天在IE7上出现了一个相关的问题,如果你选择的选择接近另一个选项,那么下拉就会出现在彼此之后。

这解决了它:

$('.chz').chosen();                 
var zidx = 100;
$('.chzn-container').each(function(){
    $(this).css('z-index', zidx);
    zidx-=1;
});

BigM更新

还有一件事你需要做的事情就是设置IE5-7的不透明度,因为它被禁用了:

.chzn-disabled {
  cursor: default;
  opacity:0.5 !important;
  filter: alpha(opacity=50) !important;
}

答案 1 :(得分:1)

事实上,如果删除IE 7条件,选择0.9.8适用于IE 7:

e.browser.version!=="7.0"

并应用以上补丁:

var zidx = 100;
$('.chzn-container').each(function(){
    $(this).css('z-index', zidx);
    zidx-=1;
});

答案 2 :(得分:0)

jQuery Chosen组件不能与IE7一起使用,至少在最新版本中是这样。我怀疑你能不能继续使用它。