使用这个 jquery / javascript 的奇怪 IE 问题

Posted

技术标签:

【中文标题】使用这个 jquery / javascript 的奇怪 IE 问题【英文标题】:Weird IE problem using this jquery / javascript 【发布时间】:2011-09-04 04:38:09 【问题描述】:

我正在使用以下代码:

ieLessThan8OptionDisable = function() 
if ($.browser.msie && parseFloat($.browser.version) < 8) 
    $("select").find("[disabled]").addClass("disabledforie").removeAttr("disabled");
    $("select").change(function()
        var selected = $(this).val();
        var disabled = $(this).find("[value="+selected+"]").hasClass("disabledforie");
        if (disabled) 
            alert("This option is disabled.\nSelect will be set to the first option.");
            $(this).find("option:first").attr("selected","selected");
         
        );
    

基本上,此代码用于选择下拉框中的禁用选项。除了存在可用性问题外,它工作得很好。

任何时候我点击应该在 IE 中禁用的选项,都会弹出一个警告,然后选择框重置到第一个位置。一切都很好。现在,当我单击选择框打开下拉菜单时,它就关闭了。基本上我必须在它打开时单击它 2 次。

我已经在 IE6 和 IE7 中尝试过这个。两者都有这个问题。

任何指针都会很棒!

谢谢

【问题讨论】:

【参考方案1】:

这听起来像是一个焦点问题。当您选择一个新选项时,选择框具有焦点,然后您会弹出一个警报,将焦点从选择元素上转移开。 IE 应该在调用警报时自动关闭选择框,但可惜他们可能没有测试这种边缘情况。所以这两次点击执行以下操作:

    将焦点返回到选择元素 在列表中选择一个项目

在调用警报之前添加对 blur 的调用:

if (disabled) 
  this.blur();// add in
  alert("This option is disabled.\nSelect will be set to the first option.");
  $(this).find("option:first").attr("selected","selected");

PS - 我还没有实际测试过,我现在没有可用的 IE

【讨论】:

以上是关于使用这个 jquery / javascript 的奇怪 IE 问题的主要内容,如果未能解决你的问题,请参考以下文章

使用这个轻量级的Javascript插件/jQuery扩展,让你的HTML5视频表现得像背景覆盖图像

使用 Javascript / Jquery 重写 URL 前缀

JavaScript事件冒泡及使用jQuery阻止

使用 jQuery 的 XML 到 javascript 数组

使用 Javascript/JQuery 解析自动生成的 .NET 日期对象

如何使用 javascript/jquery 从 URL 中删除获取变量和文件名?