7

伙计们,我使用以下代码禁用了使用 jQuery ( jquery-1.4.2.min ) 的选项。禁用发生在 Firefox 中,但不在 IE 中。

<SELECT NAME="SCOPE" id="SCOPE">  
 <OPTION VALUE="G"> Global
 <OPTION VALUE="D"> Dynamic  
</SELECT>


 $("#SCOPE option[value='G']").attr("disabled","disabled");
 $("#SCOPE option[value='D']").attr("selected", "selected");
4

2 回答 2

6

我想我可能错了,但这可能是因为可以禁用选择而不是选项。由于 Firefox 很棒而 IE 很烂,所以你可以猜到为什么 :) 你有这个问题。使用 css 使该选项的文本变灰。

然后在 jquery 上做这样的事情。

$('#SCOPE').change(function(){
  if($('#SCOPE option[value="'+$(this).val()+'"]').attr('disabled') == 'disabled'){
    alert('Its disabled you cannot select this option');
  }
});

顺便提一句。仔细检查代码,因为我没有测试过这个:)

于 2011-02-09T11:37:32.877 回答
0

我的看法与其他答案有点不同。

目的不是隐藏选项,而是让它们禁用(以保持 UI 一致)。

我的场景:

我在一个表单中有多个选择,当用户在其中一个选择中选择一个选项时,其他选择应该禁用此选项,反之亦然。用户被限制选择已选择的相同选项。我们通常禁用该选项,但 IE 7 不支持它。用户还可以获得添加新选择的选项。

解决方案 :

负载 :

如果浏览器是 IE7,那么在填充选择项并禁用其他选择项上已选择的选项时,我正在向选项添加自定义属性(“data-ie7-disabled”),并将禁用选项的颜色更改为 '# cccccc'(这是禁用选项的标准颜色)。这使得 UI 在浏览器中看起来相同。

改变时:

我将上一个选项保存在局部变量中(保存在焦点上)。

当用户尝试更改选项时

用户选择了一个在任何其他下拉列表中未选择的全新选项。然后我遍历其他选择并更改颜色并将自定义属性添加到其他选择的此选定选项。

当用户选择一个已经被选中的选项时(颜色变灰的选项)。我首先检查该选项是否具有此自定义属性。如果它有那么 > 我只是将选项恢复为前一个选项,并显示一条错误消息,显示“此选项已被选中或 BLAH BLAH”。

当用户将其现有选项更改为未在任何其他下拉列表中选择的全新选项时。我再次遍历所有其他选择选项并删除它的颜色以及自定义属性。

希望这可以帮助。

于 2015-08-07T10:55:20.010 回答