2011-09-16 32 views
13

我需要根据变量的值禁用选择选项。该值与选择选项值中的一个相似,并且需要禁用该值。根据值*仅通过HTML禁用选择选项!*

对于离,

<select> 
<option>Value a</option> 
<option>Value b</option> 
</select> 

$variable = <some select option value>; 

所以,如果变量等于值则需要在选择选项被禁用。

谢谢。

回答

19

根据您当前的标记,这将工作:

$("select option:contains('Value b')").attr("disabled","disabled"); 

http://jsfiddle.net/CtqC6/

编辑

http://jsfiddle.net/CtqC6/1/

var variable = "b" 
$("select option:contains('Value " + variable + "')").attr("disabled","disabled"); 
$("select").prop("selectedIndex",-1) 
+0

如何添加,而不是B值可变,也如当用户点击第一个选项设置为禁用它只被禁用选择菜单。 – Ajay

+0

通过构建带变量的构造函数可以使其动态化(请参阅我的编辑)。此外,禁用选定的项目的作品,它只是不取消选定的项目(也在我的编辑)。 –

+0

不错的简单解决方案,谢谢 –

5

比方说,你有以下标记

<select> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

使用这个jQuery,萨博选项将被禁用。

$("select option").each(function() { 
    var $thisOption = $(this); 
    var valueToCompare = "saab"; 

    if($thisOption.val() == valueToCompare) { 
     $thisOption.attr("disabled", "disabled"); 
    } 
}); 

Try it out here

14
$("select option[value='"+ $variable + "']").attr('disabled', true); 
4

这应该是一个更快的解决方案

$('select').children('option[value="' + $variable + '"]').attr('disabled', true)