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

标签 javascript jquery

我正在使用以下代码:

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 中试过了。两者都有这个问题。

任何指针都会很棒!

谢谢

最佳答案

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

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

在调用警报之前添加对 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

关于javascript - 使用这个 jquery/javascript 的奇怪的 IE 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6166016/

相关文章:

javascript - MSIE 让我的 Slidejs 代码看起来很糟糕

jquery - 仅在 Firefox 中使用 Jquery 的动画切换

jquery - Django 从数据库自动完成

javascript - 从外部应用程序到 Spring Security 的 Ajax 身份验证

javascript - 目录如 JavaScript-Garden

jquery - 以编程方式选中取消选中是否单选按钮 jQuery Mobile

javascript - 将范围传递给回调函数/绑定(bind)

javascript - 使用 JavaScript 获取包含 session 用户输入值的 HTML 字符串

javascript - 使用jquery将div放置在窗口的空白部分中间

javascript - 当需要匹配多个元素时,可以替代 $ ("#id .class") 语法吗?