Comment définir la "sélectionné l'option" sélectionnez liste déroulante avec jquery

j'ai la fonction jquery suivante:

$.post('GetSalesRepfromCustomer', {
    data: selectedObj.value
}, function (result) {
    alert(result[0]);
    $('select[name^="salesrep"]').val(result[0]);
});

result[0] est une valeur que je veux définir comme la selected dans ma boîte de sélection. result[0] égale Bruce jones .

la boîte de sélection est peuplée par une requête de base de données mais l'un des html rendus est:

<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]); ne remplit pas l'option select box. J'ai aussi essayé $("#salesrep").val(result[0]); sans succès.

toute aide appréciée.

donc ce que je veux c'est L'option sélectionnée / mise en évidence dans la liste déroulante du salesrep pour être 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>

Merci encore,

Script Complet

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

rendu HTML est:

<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>
25
demandé sur Smudger 2013-07-25 15:18:47

6 réponses

essayez ceci:

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

remplacer option[value="Bruce Jones"] par option[value=result[0]]

et avant de sélectionner une nouvelle option, vous pourriez vouloir "désélectionner" la précédente :

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

, Vous pouvez lire ceci : jQuery obtenir de l'option spécifique à la balise de texte

Edit: en utilisant jQuery Mobile, ce lien peut fournir une bonne solution: jquery mobile-set select / option valeurs

45
répondu Jb Drucker 2017-05-23 12:26:11

définit la valeur qu'il définira comme l'option sélectionnée pour dropdown:

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

Voici la démo de travail

si elle ne fonctionne toujours pas:

  1. veuillez vérifier les erreurs JavaScript sur la console.
  2. assurez-vous d'inclure les fichiers jquery
  3. votre réseau ne bloque pas le fichier jquery en cas d'utilisation externe.
  4. Vérifiez votre vue source un peu de temps copie exacte de l'élément d'arrêt de jquery pour fonctionner correctement
25
répondu Zaheer Ahmed 2013-07-25 11:32:37

une chose que je ne pense pas que quelqu'un ait mentionnée, et une erreur stupide que j'ai faite dans le passé (en particulier quand dynamiquement peupler sélectionne). jQuery .val () ne fonctionnera pas pour une entrée select s'il n'y a pas une option avec une valeur qui correspond à la valeur fournie.

voici un violon expliquant - > 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
répondu Jake Zieve 2015-01-06 19:43:50

vous devez remplacer YourID et value=" 3 " pour vos actuels.

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

et value=" 3 " pour vos actuelles.

$('#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>
2
répondu Oscar Fuquen 2015-07-17 03:25:58

$(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>
1
répondu Madhuka Dilhan 2017-02-16 06:25:44

La correspondance entre .val('Bruce jones') et value="Bruce Jones" est sensible à la casse. On dirait que vous capitalisez Jones dans l'un mais pas dans l'autre. Soit vous trouvez d'où vient la différence, utilisez des id au lieu du nom, ou appelez .toLowerCase() sur les deux.

0
répondu Black Mantha 2017-12-11 09:58:51