我有一个下拉
<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/
这不是设置组合框的值吗?
我的要求是我需要根据设定值值设置创建的组合框的值,之后组合框不应该可编辑 ??
请有人告诉我为什么不设置值?
答案 0 :(得分:1)
因为“肯德基”不是一个值;对应的值是“3001”。
$("#BrandNames").val('3001').prop('disabled', true);
答案 1 :(得分:1)
您正尝试将值设置为&#34; KFC&#34;这不是option
的值。值为&#34; 3001&#34;。
因此,您需要将其设置为正确的值。
另一方面,如果你拥有的只是文本字符串,并且你想根据该字符串设置值,那么你需要在选项中找到字符串并使用找到的值进行设置。
完成后,您可以设置&#34;禁用&#34;属性为&#34; true&#34;,禁用选择。
<强> 段 强>:
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;
注意 :这只是一个想法。请注意,如果有多个具有相似文本的选项,则需要找到变通方法。另请注意,: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);