2011-08-02 63 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')); 
相关问题