如何动态更改Dropdown的值并使其不可编辑
How to change the value of Dropdown dynamically and make it uneditable
我有一个下拉菜单
<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/
这不是设置组合框的值吗?
我的要求是我需要根据 setthisvalue 值设置创建的组合框的值,然后组合框不应该 editable ??
有人可以告诉我为什么它没有设置值吗??
因为"KFC"不是一个值;对应的值为“3001”。
$("#BrandNames").val('3001').prop('disabled', true);
您试图将值设置为 "KFC",这不是 option
的值。值为“3001”。
因此,您需要将其设置为适当的值。
另一方面,如果你只有文本字符串,你想根据该字符串设置值,那么你需要在选项中找到该字符串并使用找到的值来设置。
完成后,您可以将 "disabled" 属性 设置为 "true",以禁用 select。
片段:
var value = 'KFC' ;
var $opt = $("#BrandNames").children(":contains(" + value + ")");
$("#BrandNames").val($opt.val());
$("#BrandNames").prop("disabled", true);
<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>
注意:这只是一个想法。请注意,如果有多个选项具有相似的文本,那么您需要找到解决方法。另外,请注意 :contains
不是完全匹配,它的字面意思是“包含”,即即使字符串的一部分匹配。理想情况下,您应该对选项进行 filter
。
.
$("#BrandNames option:contains('"+ value +"')").prop('selected', true).parent().prop('disabled', true);
参见DEMO
你有文本而不是值,你可以通过文本找到正确的选项,并使用它来设置值,然后禁用下拉列表:
var value = 'KFC' ;
var option = $("#BrandNames option").filter(function(){
return $(this).text() == value;
});
$("#BrandNames").val(option.val()).prop('disabled',true);
已更新 fiddle:http://jsfiddle.net/y9cyag0n/3/
我有一个下拉菜单
<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/
这不是设置组合框的值吗?
我的要求是我需要根据 setthisvalue 值设置创建的组合框的值,然后组合框不应该 editable ??
有人可以告诉我为什么它没有设置值吗??
因为"KFC"不是一个值;对应的值为“3001”。
$("#BrandNames").val('3001').prop('disabled', true);
您试图将值设置为 "KFC",这不是 option
的值。值为“3001”。
因此,您需要将其设置为适当的值。
另一方面,如果你只有文本字符串,你想根据该字符串设置值,那么你需要在选项中找到该字符串并使用找到的值来设置。
完成后,您可以将 "disabled" 属性 设置为 "true",以禁用 select。
片段:
var value = 'KFC' ;
var $opt = $("#BrandNames").children(":contains(" + value + ")");
$("#BrandNames").val($opt.val());
$("#BrandNames").prop("disabled", true);
<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>
注意:这只是一个想法。请注意,如果有多个选项具有相似的文本,那么您需要找到解决方法。另外,请注意 :contains
不是完全匹配,它的字面意思是“包含”,即即使字符串的一部分匹配。理想情况下,您应该对选项进行 filter
。
.
$("#BrandNames option:contains('"+ value +"')").prop('selected', true).parent().prop('disabled', true);
参见DEMO
你有文本而不是值,你可以通过文本找到正确的选项,并使用它来设置值,然后禁用下拉列表:
var value = 'KFC' ;
var option = $("#BrandNames option").filter(function(){
return $(this).text() == value;
});
$("#BrandNames").val(option.val()).prop('disabled',true);
已更新 fiddle:http://jsfiddle.net/y9cyag0n/3/