2017-03-25 132 views
0

乾杯!使用JS或jQuery從列表中選擇多個項目

我想弄清楚如何從選項列表中選擇多個項目。目前,我有一個jQuery用於選擇包含特定數字的項目。例如,如果您看下面的屏幕截圖,我只選擇了那些數字爲'03'的選項。

我用它來做到這一點的腳本是:

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

selectedItems

的HTML SELECT和選項如下所示:

<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選擇和選項有點不同。以下是我正在嘗試使用的列表的屏幕截圖。

itemsToMove

我希望能夠做到與上述類似的事情。有些列表中有數百個選項,我只需要將某些項目移動到「當前選定」窗口。例如,我可以編寫一個jQuery或JS來僅選擇那些說InfoCard員工,InfoCard文件名,InfoCard所有者等的項目嗎?

問題在於,HTML選擇和選項在元素的可訪問性方面並不十分慷慨。

這是我現在需要使用的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> 
+0

看起來像一個非常容易的事情來解決。如果你不介意創建一個jsfiddle,我會很樂意爲你修復或改變它。 – Chris

+1

你可以做一些像'$('option')。filter((i,el)=>/InfoCard(Author |僱員|文件名)$ /。test(el.innerText))。prop('selected',true)' –

+0

E. Sundin, 稍微調整一下,歡呼聲,非常感謝! – iviouse

回答

3

您可以使用:contains選擇器來搜索其文本包含特定文本的元素。

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

我不認爲他在問如何移動物品。只是如何根據標籤包含的內容來選擇項目。 –

+0

@TimothyKanski謝謝,我現在明白了。我更新了我的答案,以使用jQuery':contains'選擇器。 – Barmar

+0

不錯。非常緩慢。 Upvoted。 –

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); 
    } 
    } 

} 
相關問題