Проблема с несколькими выбирает удаление больше чем 1 опции

Хорошо, кажется, существует проблема с Кодом JS для браузеров Opera, поскольку это только удаляет последний тег опций, который выбран в теге выбора нескольких, может кто-то помогать мне.

Вот HTML для этого:

<select id="actions_list" name="layouts" multiple style="height: 128px; width: 300px;">
    <option value="forum">forum</option>
    <option value="collapse">collapse</option>
    <option value="[topic]">[topic]</option>
    <option value="[board]">[board]</option>
</select>

Конечно, это в теге form, но существует тонна больше кода, связанного с этой формой, но здесь соответствующая информация для этого.

Вот JS, который должен обработать это, но только удаляет последнюю выбранную опцию в Opera, не уверенном в других браузерах, но это действительно должно удалить все выбранные опции, не только последнюю выбранную опцию... argg

var action_list = document.getElementById("actions_list");
var i = action_list.options.length;
while(i--)
{
    if (action_list.options[i].selected)
    {
        action_list.remove(i);
    }
}

Что не так с этим? Я не могу изобразить его один бит :(

Спасибо :)

6
задан SoLoGHoST 12 June 2010 в 04:38
поделиться

2 ответа

Проще всего это сделать с помощью jQuery, но вы можете сделать это с помощью простого Javascript.

Проблема, с которой вы столкнулись, заключается в том, что когда вы удаляете элемент из списка опций Opera, он отменяет выбор всех выбранных элементов, поэтому удаляется только первый. Обходной путь - сначала запомнить, какие элементы были выбраны, прежде чем удалять какие-либо.

var action_list = document.getElementById("actions_list");

// Remember selected items.
var is_selected = [];
for (var i = 0; i < action_list.options.length; ++i)
{
    is_selected[i] = action_list.options[i].selected;
}

// Remove selected items.
i = action_list.options.length;
while (i--)
{
    if (is_selected[i])
    {
        action_list.remove(i);
    }
}
9
ответ дан 8 December 2019 в 17:18
поделиться

Вы можете сделать это гораздо проще, используя jQuery:

$('#actions_list option:selected').remove()
5
ответ дан 8 December 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: