Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery/javascript时出现奇怪的IE问题_Javascript_Jquery - Fatal编程技术网

使用jquery/javascript时出现奇怪的IE问题

使用jquery/javascript时出现奇怪的IE问题,javascript,jquery,Javascript,Jquery,我正在使用以下代码: ieLessThan8OptionDisable = function() { if ($.browser.msie && parseFloat($.browser.version) < 8) { $("select").find("[disabled]").addClass("disabledforie").removeAttr("disabled"); $("select").change(function(){ v

我正在使用以下代码:

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");
         }
        });
    }
}
ieLessThan8OptionDisable=函数(){
if($.browser.msie&&parseFloat($.browser.version)<8){
$(“选择”).find(“[disabled]”)。addClass(“disabledforie”).removeAttr(“disabled”);
$(“选择”).change(函数(){
所选变量=$(this.val();
var disabled=$(this.find(“[value=“+selected+”]”)hasClass(“disabledforie”);
如果(禁用){
警报(“此选项已禁用。\n选择将设置为第一个选项。”);
$(this.find(“option:first”).attr(“selected”、“selected”);
}
});
}
}
基本上,此代码用于选择下拉框中的禁用选项。除了可用性问题之外,它工作得非常好

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

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

任何指针都会很棒


谢谢

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

  • 将焦点返回到select元素
  • 在列表中选择一项
  • 在调用警报之前添加对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