Проблема с множественным выбором, удаляющим более 1 опции - PullRequest
6 голосов
/ 12 июня 2010

Хорошо, похоже, проблема с кодом 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>

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

Вот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);
    }
}

Что не так с этим?Я не могу понять это немного: (

Спасибо:)

Ответы [ 4 ]

9 голосов
/ 12 июня 2010

Проще всего это сделать с помощью 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);
    }
}
5 голосов
/ 12 июня 2010

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

$('#actions_list option:selected').remove()
0 голосов
/ 12 января 2018

Удаление нескольких опций из выбора на основе условия:

while(SelectBox.length > 1){
    if(SelectBox[SelectBox.length -1].text != "YourCondition"){
       SelectBox.remove(SelectBox.length -1);
    }
}
0 голосов
/ 01 ноября 2013
$.each($('[name="alltags"] option:selected'), function( index, value ) {
  $(this).remove();
});

вместо этого попробуйте убрать множественный выбор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...