好的,浏览器浏览器的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中最后选择的选项,不确定其他浏览器,但它确实需要删除所有选定的选项,而不仅仅是最后选择的选项... 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);
}
}
这有什么问题?我想不出来一点:(
谢谢:)
答案 0 :(得分:9)
使用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);
}
}
答案 1 :(得分:5)
使用jQuery:
可以更轻松地完成$('#actions_list option:selected').remove()
答案 2 :(得分:0)
$.each($('[name="alltags"] option:selected'), function( index, value ) {
$(this).remove();
});
尝试这样做以删除多个选择
答案 3 :(得分:0)
根据条件从select中删除多个选项:
while(SelectBox.length > 1){
if(SelectBox[SelectBox.length -1].text != "YourCondition"){
SelectBox.remove(SelectBox.length -1);
}
}