2011-08-02 61 views
24

如何在<select multiple>元素的指定索引處插入選項元素?如何在html中選擇(多個)的指定索引處插入選項?

感謝

+1

爲什麼投票下來的傢伙?這曾經是我的問題。 –

+2

爲什麼這個標記下來?當你記下某些東西時,那個小工具提示確實建議你留下評論,告訴你爲什麼要記下來......我記下這些降價。 –

+4

這是一個有效的問題! –

回答

19
$("select option").eq(index).before($("<option></option>").val(val).html(text)); 
+1

謝謝。你能給個例子嗎。我努力得到什麼是指數val和所有。 – Dipak

+3

這不是天才就是瘋狂的黑客。 – Sameer

+1

什麼在這個世界上? – bgmCoder

2

這裏有一種方法可以做到這一點:

var myOption = "<option>Dynamic Option</option>"; 
var index = 2; 
$(myOption).insertBefore("select option:nth-child("+index+")"); 

fiddle example

+0

我試過了。但沒有成功 – Dipak

+0

我想使用elememts Id而不是使用「select」 – Dipak

+0

因爲我有多個元素 – Dipak

3

而另一種選擇,SANS的jQuery:

標記:

<select multiple="multiple" id="mySelect"> 
    <option>First</option> 
    <option>Third</option> 
</select> 

JS:

<script type="text/javascript"> 
    var myDdl = document.getElementById("mySelect"); 
    var myOption = document.createElement("OPTION"); 
    myOption.innerText = "Second"; 

    myDdl.options.insertBefore(myOption, myDdl.options[myDdl.options.length - 1]); 

</script> 
+0

I試過這個。但沒有成功 – Dipak

+1

hi @Dipak - 你有沒有得到任何特別的錯誤/破損,我可以協助? – Brian

+0

這隻會在IE – Carl

2

我提出這個答案,因爲這個問題是沒有指定的jQuery。

function insertOptionToSelect(select, idx, option) { 
    var saved = []; 
    var i; 
    for (i = 0; i < select.options.length; i++) { 
     saved.push(select.options[i]); 
    } 
    select.options.length = 0; 
    for (i = 0; i < idx; i++) { 
     select.options[select.options.length] = saved[i]; 
    } 
    select.options[select.options.length] = option; 
    while (i < saved.length) { 
     select.options[select.options.length] = saved[i++]; 
    } 
} 

下面將插入的選擇id爲所選擇的索引處的選項 'MyPizzaSelect':

var myselect = document.getElementById('MyPizzaSelect'); 
insertOptionToSelect(myselect, myselect.selectedIndex, new Option('Pizza Margarita', '12345')); 
相關問題