2012-04-20 16 views
32

Jak mogę dynamicznie ustawić opcje z mojego pola wyboru html przy pomocy Javascript? To jest moje ustawienia strony:Dynamicznie ustaw opcje select z JavaScript

<form name="test"> 
    <table> 
    <tr> 
     <td class='dataleft'>Product: </td> 
     <td><select name='inptProduct'></select></td> 
    </tr> 
    </table> 
</form> 

mam wszystkie wartości w tablicy. To jest miejsce, w którym można ustawić s. <option>.

for(var i = 0; i < productArray.length; i++) { 
    console.log("<option value='" + productArray[i] + "'>" + productArray[i] + "</option>"); 
} 

PS: jQuery może być używany.


Rozwiązanie: Jest to ostateczne rozwiązanie szukałem. Nie stosuje nowych opcji do pola wyboru. Usuwa wszystko, a potem dodaje nowe:

var optionsAsString = ""; 
for(var i = 0; i < productArray.length; i++) { 
    optionsAsString += "<option value='" + productArray[i] + "'>" + productArray[i] + "</option>"; 
} 
$("select[name='inptProduct']").find('option').remove().end().append($(optionsAsString)); 
+2

http://stackoverflow.com/questions/170986/what-is-the-best-way-to-add-options-to-a-select-from-an-array- with-jquery –

+0

http://stackoverflow.com/questions/47824/how-do-you-remove-all-the-options-of-a-select-box-and-then-add-one-option-and-se – AbiusX

Odpowiedz

32

wellyou prawie zrobić wszystko:

var optionsAsString = ""; 
for(var i = 0; i < productArray.length; i++) { 
    optionsAsString += "<option value='" + productArray[i] + "'>" + productArray[i] + "</option>"; 
} 
$('select[name="inptProduct"]').append(optionsAsString); 

EDIT usunięte $ owijkę wokół ostatni optionsAsString jak append automatycznie konwertuje ciągi

+1

+1 wkleiłbym ponownie do mojej bazy kodów – vemv

+2

@vemv * ponownie * - może czas na stworzenie funkcji, która to zrobi – csharpfolk

19
var $inputProduct = $("select[name='inputProduct']") 

$(productArray).each(function(i, v){ 
    $inputProduct.append($("<option>", { value: v, html: v })); 
}); 
+0

to zadziała - ale dodanie opcji za jednym razem jest bardziej wydajne. Nie ma to znaczenia, jeśli jest to tylko jeden zrzut na stronie. – gotofritz

+0

co sprawia, że ​​myślisz, że tego nie robi? – hunter

+1

jesteś uruchomiony. Zastosuj dla każdego członka produktuArray – gotofritz

-5

możesz ustawić identyfikator dla wyboru id = inptProduct Następnie wykonaj $ („#inptProduct”), Val (yourselectValue)

+0

Po pierwsze nie trzeba ustawiać id ma dostęp do węzła, po drugie val robi coś zupełnie innego. – gotofritz

+0

.val() ustawi wybraną wartość elementu select. – Joe

1
function onLoad() { 

    var type = new Array("Saab","Volvo","BMW"); 

    var $select = $("select[name='XXXXXType']") 
    alert($select); 
    $(type).each(function(i, v){ 
     $select.append($("<option>", { value: v, html: v })); 
     }); 

} 
<select name="XXXXXType" id="XXXXXType"></select> 
+0

nie działa w aplikacji mobilnej –

2

Zakładając, że tablica productArray jest prostą macierz, a każdy element jest wartością opcji, a w tytule o takiej możliwości .

$('select[name="inptProduct"]') 
    .html('<option>' + productArray.join('</option><option>') + '</option>'); 

Przykład:

productArray = ['One', 'Two', 'Three']; 

// With the original code being 

<select name="inptProduct"> 
    <option>There could be no options here</option> 
    <option>Otherwise, any options here will be overwritten</option> 
</select> 

// Running the code above would output 

<select name="inptProduct"> 
    <option>One</option> 
    <option>Two</option> 
    <option>Three</option> 
</select> 
0

Jeśli nie nalegając na czystym JavaScript, aby wykonać zadanie, można łatwo wykonać zadanie za pomocą jQuery.

<form name="test"> 
    <table> 
    <tr> 
     <td class='dataleft'>Product: </td> 
     <td><select id='inptProduct'></select></td> 
    </tr> 
    </table> 
</form> 


for (var i = 0; i < productArray.length; i++) { 
    $("#inptProduct").append('<option value=' + if_you_want_set_value + '>' + productArray[i] + '</option>'); 
    } 

Zauważ, że tutaj użyłem id znacznika select. Dlatego też dodam część html. Mam nadzieję, że wiesz, jak dodać jQuery.

0

zwykle zrobić to tak:

document.getElementById("selectid").innerHTML="<option value='foo'>FOO</option>";

Powiązane problemy