使用JS或jQuery从列表中选择多个项目

时间:2017-03-25 00:44:32

标签: javascript jquery html

我想弄清楚如何从选项列表中选择多个项目。目前,我有一个jQuery我用来选择包含一定数量的项目。例如,如果您查看下面的屏幕截图,我只选择了数字'03'的选项。

我用来做这个的脚本是:

$('#formfields option[title*="(##)"]').attr('selected', 'selected');

selectedItems

HTML SELECT和OPTION如下所示:

<select id="formfields" name="formfields" divclass="" optionsonly="false" size="10" fromselect="false" class="mcdropDown"
title="Form Fields" multiple="" required="" aria-required="true">
<option value="2O5W6XNX5ZCSDLW6GK" title="Completion Documentation - mastercontrol.links.Completion (01)">Completion Documentation - mastercontrol.links.Completion (01)</option>
显然,有更多的选择。

现在,我有一个类似的列表,但HTML SELECTS和OPTIONS有点不同。这是我正在尝试使用的列表的屏幕截图。

itemsToMove

我希望能够做到与上面类似的事情。其中一些列表中有数百个选项,我只需要将某些项目移动到“当前选中”窗口。例如,我可以编写一个jQuery或JS来只选择那些说明InfoCard Employee,InfoCard文件名,InfoCard所有者等的项目吗?

问题是HTML SELECTS和OPTIONS在元素的可访问性方面并不是非常慷慨。

这是我目前必须处理的HTML。

<select name="parentList" size="8" multiple="" style="height:200px;font-size:11px;" ondblclick="MoveAcross(document.OrderForm['parentList'],document.OrderForm['updownlist']);">
<option value="O.247"> InfoCard Dataset- InfoCard Author</option>

2 个答案:

答案 0 :(得分:3)

您可以使用:contains选择器搜索其文字包含特定文字的元素。

$("#leftSelect option:contains(InfoCard Employee)").prop('selected', true);

答案 1 :(得分:0)

这是一个可用于选择包含字符串的所有项目的函数。

小提琴:https://jsfiddle.net/TimothyKanski/8toya4h1/

function selectOptionsByNameContains(elementId, str){

  var ele = document.getElementById(elementId);
  var n = ele.options.length;
  for(var i = 0; i < n; i++){
    var text = ele.options[i].innerHTML
    console.log({text:text,str:str});
    if(text.includes(str)){
        $("#" + elementId).children().eq(i).attr('selected', true);
    }
  }

}