2012-02-21 7 views
9

sto popolando un campo di selezione utilizzando jQuery al caricamento della pagina utilizzando questo metodoJQuery aggiornare casella di selezione

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

Tuttavia questo lascia la casella di selezione 'vuota', vale a dire il primo valore nella lista delle opzioni, non è preselezionato come l'opzione selezionata.

Come si aggiorna questo elenco in modo che il primo valore sia preselezionato?

dispiace - avrebbe dovuto dire che era jQuery Mobile prima

Grazie.

risposta

21

È possibile aggiungere un attributo "selezionato" all'elemento opzione che si desidera selezionare:

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

Non si specifica come si popolano esattamente si seleziona elemento, utilizzando un ciclo, si potrebbe fare in questo modo:

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


Così sembra che si sta utilizzando jQuery Mobile come hai detto nel commento.

Se si utilizza il Selezionare Menu widget di, è necessario aggiornare a livello di codice dopo aver apportato modifiche a livello di programmazione al suo contenuto/struttura:

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

Documentation

+0

Forse questo è un problema con i campi di selezione dei moduli mobili di JQuery poiché nessuno di questi esempi sta selezionando un valore, sì in quello (per esempio su un iPhone, quando si visualizza la selezione c'è un segno di spunta blu accanto al valore selezionato) ma sul carico la casella di selezione è bianca. Molto strano. – user1202278

+1

Devi specificare che stai usando jquery mobile, questa è un'informazione piuttosto importante! Stai usando il widget selectmenu? –

+0

Ho modificato la mia risposta di conseguenza. –

3

Semplicemente .. si imposta il valore quello che vuoi, vale a dire: $('#select').val(5); .. quindi nel tuo caso il suo $('#select').val(result);

Edit: un esempio funzionante completo incluso:

<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

temo che non è risolverlo, ancora opzione preselezionata vuota :( – user1202278

+0

Ho aggiornato la risposta con un esempio funzionante – Ashraf

+0

Forse questo è un problema con i campi di selezione dei moduli mobili di JQuery poiché nessuno di questi esempi pre seleziona un valore, sì in t cappello (ad esempio su un iPhone, quando si visualizza la selezione per c'è un segno di spunta blu accanto al valore selezionato) ma sul carico la casella di selezione è bianca. Molto strano. – user1202278

1

Non tutti i browser Aggiornare Seleziona automaticamente dopo aver aggiunto una nuova opzione.

Un trucco che funziona per me è nascondere e mostrare la casella di selezione solo dopo aver aggiunto nuove opzioni ad esso. Quindi nel tuo caso:

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

Per quanto riguarda la selezione del corretto opzione appena aggiunto, seguire con:

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

È possibile utilizzare

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

Forse questo è un problema con i campi di selezione dei moduli mobili di JQuery poiché nessuno di questi esempi sta selezionando un valore, sì in quello (per esempio su un iPhone, quando si visualizza la selezione c'è un segno di spunta blu accanto al valore selezionato) ma sul carico la casella di selezione è bianca. Molto strano. – user1202278