8

Opera 浏览器的 JS 代码似乎有问题,因为它只删除了在多选标签中选择的最后一个选项标签,有人可以帮助我吗?

这是此的 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中最后选择的选项,不确定其他浏览器,但它确实需要删除所有选定的选项,而不仅仅是最后选择的选项......

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

4 回答 4

12

使用 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);
    }
}
于 2010-06-12T05:19:38.823 回答
6

您可以使用jQuery更轻松地做到这一点:

$('#actions_list option:selected').remove()
于 2010-06-12T04:55:28.970 回答
0
$.each($('[name="alltags"] option:selected'), function( index, value ) {
  $(this).remove();
});

试试这个来删除多项选择

于 2013-11-01T02:54:07.770 回答
0

根据条件从选择中删除多个选项:

while(SelectBox.length > 1){
    if(SelectBox[SelectBox.length -1].text != "YourCondition"){
       SelectBox.remove(SelectBox.length -1);
    }
}
于 2018-01-12T08:23:04.790 回答