我有以下jquery函数:
$.post('GetSalesRepfromCustomer', {
data: selectedObj.value
}, function (result) {
alert(result[0]);
$('select[name^="salesrep"]').val(result[0]);
});
result[0]
是我想在我的选择框中设置为selected
项的值。
result[0]
等于Bruce jones
。
选择框由数据库查询填充,但渲染的html之一是:
<select id="salesrep" data-theme="a" data-mini="true" name="salesrep">
<option value=""> </option>
<option value="john smith">john smith</option>
<option value="Bruce Jones">Bruce Jones</option>
<option value="Adam Calitz">Adam Calitz</option>
<option>108</option>
</select>
$('select[name^="salesrep"]').val(result[0]);
未填充所选的选择框选项。我也没试过$("#salesrep").val(result[0]);
。
任何帮助表示感谢。
所以我想要的是salesrep下拉列表中选中/突出显示的选项是Bruce Jones。
HTML:
<select id="salesrep" data-theme="a" data-mini="true" name="salesrep">
<option value=""> </option>
<option value="john smith">john smith</option>
<option value="Bruce Jones" selected >Bruce Jones</option>
<option value="Adam Calitz">Adam Calitz</option>
<option>108</option>
</select>
再次感谢,
整个脚本
<script type="text/javascript">
$(document).ready(function () {
$("#customer").autocomplete(
{
source: "get_customers",
messages:
{
noResults: '',
results: function() {}
},
select: function( event, ui )
{
var selectedObj = ui.item;
$.post('GetSalesRepfromCustomer', {data:selectedObj.value},function(result) {
alert(result[0]);
var selnametest="Bruce Koller";
$("#salesrep").val(selnametest);
});
}
});
});
</script>
呈现的HTML是:
<select id="salesrep" data-theme="a" data-mini="true" name="salesrep">
<option value=""> </option>
<option value="RyanLubuschagne">Ryan Lubuschagne</option>
<option value="Bruce Jones">Bruce Jones</option>
<option value="Adam Calitz">Adam Calitz</option>
</select>
答案 0 :(得分:47)
试试这个:
$('select[name^="salesrep"] option[value="Bruce Jones"]').attr("selected","selected");
只需将option[value="Bruce Jones"]
替换为option[value=result[0]]
在选择新选项之前,您可能想要“取消选择”前一个选项:
$('select[name^="salesrep"] option:selected').attr("selected",null);
您可能也想阅读此内容:jQuery get specific option tag text
编辑:使用jQuery Mobile,此链接可提供良好的解决方案:jquery mobile - set select/option values
答案 1 :(得分:27)
设置值,将其设置为下拉列表的选定选项:
$("#salesrep").val("Bruce Jones");
如果仍无效:
答案 2 :(得分:3)
我认为没有人提到的一件事,以及我过去犯过的一个愚蠢的错误(特别是在动态填充选择时)。如果没有一个值与提供的值匹配的选项,则jQuery的.val()将不适用于select输入。
这是一个小提琴解释 - &gt; http://jsfiddle.net/go164zmt/
<select id="example">
<option value="0">Test0</option>
<option value="1">Test1</option>
</select>
$("#example").val("0");
alert($("#example").val());
$("#example").val("1");
alert($("#example").val());
//doesn't exist
$("#example").val("2");
//and thus returns null
alert($("#example").val());
答案 3 :(得分:2)
您必须替换当前的YourID和value =“3”。
$(document).ready(function() {
$('#YourID option[value="3"]').attr("selected", "selected");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select id="YourID">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="4">D</option>
</select>
当前的
和value =“3”。
$('#YourID option[value="3"]').attr("selected", "selected");
<select id="YourID" >
<option value="1">A </option>
<option value="2">B</option>
<option value="3">C</option>
<option value="4">D</option>
</select>
答案 4 :(得分:1)
$(document).ready(function() {
$('#YourID option[value="3"]').attr("selected", "selected");
$('#YourID option:selected').attr("selected",null);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select id="YourID">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="4">D</option>
</select>
答案 5 :(得分:0)
.val('Bruce jones')
和value="Bruce Jones"
之间的匹配区分大小写。看起来你把琼斯资本化为一个而不是另一个。要么追踪差异所在的位置,请使用ID而不是名称,或者在两者上调用.toLowerCase()
。