2012-02-21 4 views
9

Je peuplant un champ de sélection à l'aide JQuery à la page charge en utilisant cette méthodeJQuery rafraîchir la boîte de sélection

$('#select').append('<option value="' + result + '">' + result + '</option>'); 

Cependant cela laisse la boîte de sélection « en blanc », à savoir la première valeur de la liste des options n'est pas présélectionné comme l'option sélectionnée. Comment puis-je «actualiser» cette liste afin que la première valeur soit présélectionnée?

Désolé - aurait dit qu'il était mobile JQuery avant

Merci.

Répondre

21

Vous pouvez ajouter un attribut "sélectionné" à l'élément d'option que vous souhaitez sélectionner:

$('#select') 
    .append('<option value="' + result + '" selected="selected">' + result + '</option>'); 

Vous ne précisez pas comment vous renseignez-vous exactement sélectionner l'élément, en utilisant une boucle, vous pouvez faire comme ceci:

var data = ['a', 'b', 'c']; 
var $select = $('#select'); // you might wanna empty it first with .empty() 

for (var i = 0; i < data.length; i++) { 
    var o = $('<option/>', { value: data[i] }) 
     .text(data[i]) 
     .prop('selected', i == 0); 
    o.appendTo($select); 
}​ 

DEMO


Il semble que vous utilisez jQuery Mobile comme tu l'as dit dans le commentaire.

Si vous utilisez le sélectionnez Menu widget de, vous devez actualiser programme après avoir effectué le changement programmatique à son contenu/structure:

$select.selectmenu("refresh", true); 

Documentation

+0

C'est peut-être un problème avec les champs mobiles JQuery, car aucun de ces exemples ne permet de sélectionner une valeur, oui (par exemple sur un iPhone, lorsque vous sélectionnez la sélection, il y a une coche bleue à côté de la valeur sélectionnée) mais sur le chargement, la boîte de sélection est blanche. Très étrange. – user1202278

+1

Vous devez spécifier que vous utilisez jquery mobile, c'est une information assez importante! Utilisez-vous le widget selectmenu? –

+0

J'ai modifié ma réponse en conséquence. –

3

simplement .. Vous définissez la valeur que vous voulez, à savoir: $('#select').val(5); .. donc dans votre cas son $('#select').val(result);

Edit: un exemple de travail complet inclus:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.6.4.js'></script> 
<select id='select'></select> 
<br> 
<input type=button onclick='addNew()' value='Add'> 

<script> 
function addNew() 
{ 
     var result = Math.floor(Math.random()*1000); 
     $('#select').append('<option value="' + result + '">' + result + '</option>'); 
     $('#select').val(result);   
} 
</script> 

+0

Je crains que ce n'est pas le résoudre, encore option présélectionnée vide :( – user1202278

+0

J'ai mis à jour la réponse avec un exemple de travail – Ashraf

+0

Peut-être que ceci est un problème avec les champs mobiles JQuery sélectionner des champs comme aucun de ces exemples sont pré sélectionner une valeur, oui en t chapeau (par exemple sur un iPhone, lorsque vous affichez la sélection car il y a une coche bleue à côté de la valeur sélectionnée) mais sur le chargement la boîte de sélection est blanche. Très étrange. – user1202278

1

Tous les navigateurs n'actualisez sélectionner automatiquement après avoir ajouté une nouvelle option.

Un truc qui fonctionne pour moi est de cacher et d'afficher la boîte de sélection juste après l'ajout de nouvelles options. Donc, dans votre cas:

$('#select').append('<option value="' + result + '">' + result + '</option>').hide().show(); 

En ce qui concerne la sélection de l'option nouvellement ajoutée correcte, suivre avec:

$('select').val(result); 
3

Vous pouvez utiliser

$('#select').removeAttr('selected').find('option:first').attr('selected', 'selected'); 
+0

C'est peut-être un problème avec les formulaires mobiles JQuery sélectionner des champs car aucun de ces exemples ne sont pré-sélectionnant une valeur, oui dans cela (par exemple sur un iPhone, quand vous voyez la sélection pour une coche bleue suivante à la valeur sélectionnée) mais sur le chargement, la boîte de sélection est blanche. Très étrange. – user1202278

Questions connexes