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

时间:2011-02-07 14:13:39

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

任何指针都会很棒!

由于

1 个答案:

答案 0 :(得分:2)

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

  1. 将焦点返回到选择元素
  2. 选择列表中的项目
  3. 在调用警报之前添加对模糊的调用:

    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可用