Как установить "выбранную опцию" раскрывающегося списка select с помощью jquery

у меня есть следующая функция 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]); не заполняет выбранную опцию select box. Я также пробовал $("#salesrep").val(result[0]); без каких-либо удачи.

любая помощь ценится.

так что я хочу, это выбранный / выделенный параметр в раскрывающемся списке salesrep будет Брюс Джонс.

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 ответов


попробуйте это :

$('select[name^="salesrep"] option[value="Bruce Jones"]').attr("selected","selected");

просто заменить option[value="Bruce Jones"] by option[value=result[0]]

и прежде чем выбрать новый вариант, вы можете "отменить выбор" предыдущего:

$('select[name^="salesrep"] option:selected').attr("selected",null);

вы можете прочитать это тоже:jQuery получить конкретный текст тега опции

Edit: используя jQuery Mobile, Эта ссылка может обеспечить хорошее решение:jQuery mobile-установить значения выбора / опции


установите значение, которое он установит в качестве выбранного параметра для выпадающего списка:

$("#salesrep").val("Bruce Jones");

вот работает демо

если он все еще не работает:

  1. пожалуйста, проверьте ошибки JavaScript в консоли.
  2. убедитесь, что вы включили файлы jquery
  3. ваша сеть не блокирует файл jquery при внешнем использовании.
  4. проверьте источник представления некоторое время точную копию элемента stop jquery для работы правильно

одна вещь, которую я не думаю, что кто-то упомянул, и глупая ошибка, которую я сделал в прошлом (особенно при динамическом заполнении выбора). jQuery .val () не будет работать для ввода select, если нет опции со значением, которое соответствует предоставленному значению.

вот скрипка, объясняющая -> 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());

вы должны заменить 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>

$(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>

матч между .val('Bruce jones') и value="Bruce Jones" регистр. Похоже, что вы капитализируете Джонса в одном, но не в другом. Либо отследить, где разница происходит от, использовать id вместо имени, или вызов .toLowerCase() на обоих.