如何动态更改Dropdown的值并使其不可编辑

时间:2015-01-06 12:06:59

标签: jquery

我有一个下拉

<select id="BrandNames">
<option value="3000">General</option>
<option value="3001">KFC</option>
<option value="3002">Chutneys</option>
</select>

成功完成破坏后

我试图以这种方式改变它的价值

var setthisvalue = 'KFC' ;

$("#BrandNames").val(setthisvalue);

这是我的jsfiddle

http://jsfiddle.net/y9cyag0n/1/

这不是设置组合框的值吗?

我的要求是我需要根据设定值值设置创建的组合框的值,之后组合框不应该可编辑 ??

请有人告诉我为什么不设置值?

4 个答案:

答案 0 :(得分:1)

因为“肯德基”不是一个值;对应的值是“3001”。

$("#BrandNames").val('3001').prop('disabled', true);

答案 1 :(得分:1)

您正尝试将值设置为&#34; KFC&#34;这不是option的值。值为&#34; 3001&#34;。

因此,您需要将其设置为正确的值。

另一方面,如果你拥有的只是文本字符串,并且你想根据该字符串设置值,那么你需要在选项中找到字符串并使用找到的值进行设置。

完成后,您可以设置&#34;禁用&#34;属性为&#34; true&#34;,禁用选择。

<强>

&#13;
&#13;
var value = 'KFC' ;
var $opt = $("#BrandNames").children(":contains(" + value + ")");
$("#BrandNames").val($opt.val());
$("#BrandNames").prop("disabled", true);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="BrandNames">
  <option value="3000">General</option>
  <option value="3001">KFC</option>
  <option value="3002">Chutneys</option>
</select>
&#13;
&#13;
&#13;

注意 :这只是一个想法。请注意,如果有多个具有相似文本的选项,则需要找到变通方法。另请注意,:contains不完全匹配,字面意思是&#34; 包含&#34;即使字符串的一部分匹配。理想情况下,您应该对选项进行filter

答案 2 :(得分:1)

$("#BrandNames option:contains('"+ value +"')").prop('selected', true).parent().prop('disabled', true);

请参阅DEMO

答案 3 :(得分:1)

您的文字不是值,您可以按文字找到正确的选项,并使用它来设置值,然后禁用下拉列表:

var value = 'KFC' ;

var option = $("#BrandNames option").filter(function(){
   return $(this).text() == value; 
});
$("#BrandNames").val(option.val()).prop('disabled',true);

更新了小提琴:http://jsfiddle.net/y9cyag0n/3/