javascript
  • jquery
  • 2012-04-20 17 views 32 likes 
    32

    Come posso impostare dinamicamente le opzioni dal mio campo di selezione html con Javascript? Questa è la mia impostazione della pagina:Imposta dinamicamente opzioni di selezione con JavaScript

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

    Ho tutti i valori in un array. Questa è la posizione per impostare il numero <option> s.

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

    PS: jQuery può essere utilizzato.


    Soluzione: Questa è la soluzione finale che cercavo. Non applica le nuove opzioni al campo di selezione. Rimuove tutti di prima, e poi aggiunge quelli nuovi:

    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

    risposta

    32

    wellyou hanno quasi fatto tutto:

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

    EDIT rimosso $ wrapper ultima optionsAsString come append converte automaticamente le stringhe

    +1

    +1 dovrebbe incollare di nuovo nella mia base di codici – vemv

    +2

    @vemv * di nuovo * - forse è il momento di creare una funzione che faccia questo – csharpfolk

    19
    var $inputProduct = $("select[name='inputProduct']") 
    
    $(productArray).each(function(i, v){ 
        $inputProduct.append($("<option>", { value: v, html: v })); 
    }); 
    
    +0

    funzionerà - ma aggiungere le opzioni in un colpo solo è più efficiente. Non è importante se è solo un pulldown in una pagina. – gotofritz

    +0

    cosa ti fa pensare che questo non lo faccia? – hunter

    +1

    si sta eseguendo .append per ogni membro del prodottoArray – gotofritz

    -5

    è possibile impostare l'id per l'id selezionato = inptProdotto Quindi fare $ ('#inptProduct'). Val (yourselectValue)

    +0

    Prima di tutto non è necessario impostare l'id per accedere a un nodo, in secondo luogo val fa qualcosa di completamente diverso. – gotofritz

    +0

    .val() imposterà il valore selezionato dell'elemento 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

    non funziona nell'applicazione mobile –

    2

    Supponendo che la matrice è una matrice productArray semplice, con ciascun elemento essendo il valore dell'opzione, e il titolo desiderato per tale opzione .

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

    Esempio:

    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

    Se non insistere per puro JavaScript per fare il lavoro, si può facilmente fatto il lavoro utilizzando 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>'); 
        } 
    

    Si noti che qui ho utilizzato l'id del tag select. Ecco perché aggiungo anche la parte html. Spero tu sappia come aggiungere jQuery.

    0

    faccio di solito in questo modo:

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

    Problemi correlati