Подтвердить что ты не робот

Как вставить опцию в указанный индекс select (Multiple) в html?

Как я могу вставить элемент опции по указанному индексу в элементе <select multiple>?

Спасибо

4b9b3361

Ответ 1

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

Ответ 2

Ванильный javascript (без jQuery) и перекрестный браузер.

Чтобы вставить новую опцию в "mySelect", со значением "1" и текстом "текст", перед 0-м существующим элементом:

mySelect.options.add(new Option("text", "1"), mySelect.options[0]);

Смотрите: https://developer.mozilla.org/en/docs/Web/API/HTMLSelectElement#add%28%29

Ответ 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>

Ответ 4

Здесь вы можете сделать это:

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

пример скрипта

Ответ 5

Я отправляю этот ответ, потому что 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++];
    }
}

Далее будет добавлена ​​опция в выбранном индексе select с id 'MyPizzaSelect':

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