如何使用jquery设置选择下拉列表的“选定选项”

时间:2013-07-25 11:18:47

标签: jquery html selected html-select

我有以下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>

6 个答案:

答案 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");

Here is working Demo

如果仍无效:

  1. 请检查控制台上的JavaScript错误。
  2. 确保包含jquery文件
  3. 如果在外部使用,您的网络不会阻止jquery文件。
  4. 检查您的视图源,以便元素的精确副本停止jquery正常工作

答案 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()