2012-02-21 16 views
9

ja zapełnianie Wybierz pole przy użyciu jQuery na stronie obciążenia przy użyciu tej metodyJQuery odświeżyć wybierz pole

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

jednak pozostawia polu Wybierz „puste”, czyli pierwsza wartość na liście opcji nie jest wstępnie jako wybrana opcja.

Jak odświeżyć tę listę, aby pierwsza wartość została wybrana?

Niestety - powinien powiedzieć, że był JQuery komórkę przed

Dziękuję.

Odpowiedz

21

Możesz dodać "wybrany" atrybut do elementu opcji, który chcesz wybrać:

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

Nie określić, w jaki sposób wypełnić dokładnie wybraniu elementu, za pomocą pętli, można zrobić tak:

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


Więc wydaje się, że używasz jQuery Mobile, tak jak powiedziałeś w komentarzu.

Jeśli używasz selectmenu widget, trzeba programowo odświeżyć po dokonaniu programową zmianę jej zawartości/struktury:

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

Documentation

+0

Być może jest to problem z polami wyboru formularzy mobilnych w JQuery, ponieważ żaden z tych przykładów nie wybiera wstępnie wartości, tak w tym (na przykład na iPhonie, gdy przeglądasz wybór, ponieważ obok wybranej wartości znajduje się niebieski znacznik) ale na ładunek pole wyboru jest białe. Bardzo dziwne. – user1202278

+1

Powinieneś określić, że używasz jquery mobile, to dość ważne informacje! Czy używasz widżetu wyboru menu? –

+0

Odpowiednio zredagowałem swoją odpowiedź. –

3

.. Wystarczy ustawić wartość co chcesz, tj $('#select').val(5); .. więc w Twoim przypadku jego $('#select').val(result);

EDIT: pełny przykład roboczych obejmowały:

<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

Obawiam się, że nie jest go rozwiązać, nadal pusta wstępnie wybrana opcja :( – user1202278

+0

Mam zaktualizowaną odpowiedź z działającym przykładem: – Ashraf

+0

Być może jest to problem z polami wyboru formularzy mobilnych w JQuery, ponieważ żaden z tych przykładów nie wybiera wstępnie wartości, tak w t Kapelusz (na przykład na iPhonie, gdy przeglądasz zaznaczenie, tam jest zaznaczony niebieski znacznik obok wybranej wartości), ale przy załadunku pole wyboru jest białe. Bardzo dziwne. – user1202278

1

Nie wszystkie przeglądarki odświeżyć wybrać automatycznie po dodaniu nowej opcji.

Jedna sztuczka, która działa dla mnie, to ukrywanie i pokazywanie pola wyboru zaraz po dodaniu do niego nowych opcji. Więc w twoim przypadku:

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

As wyboru nowo dodaną odpowiednią opcję, postępuj zgodnie z:

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

Można użyć

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

Być może jest to problem z polami wyboru formularzy mobilnych w JQuery, ponieważ żaden z tych przykładów nie wybiera wstępnie wartości, tak w tym (na przykład na iPhonie, gdy przeglądasz wybór, tam jest niebieski znaczek następny do wybranej wartości), ale przy załadunku pole wyboru jest białe. Bardzo dziwne. – user1202278

Powiązane problemy