2017-03-25 1 views
0

乾杯!JSまたはjQueryを使用して複数の項目をリストから選択する

オプション一覧から複数の項目を選択する方法を知りたいと思います。現在、特定の番号を含む項目を選択するために使用する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

私は、上記と同様の何かをできるようにしたいと思います。これらのリストには何百ものオプションがあり、特定のアイテムを '現在選択されている'ウィンドウに移動するだけで済みます。たとえば、InfoCard Employee、InfoCard File Name、InfoCard Owner ...というような項目だけを選択するjQueryやJSを書くことはできますか?

問題は、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> 
+0

は、修正するために本当に簡単なことのように思えます。 jsfiddleを作成しても構わないのであれば、私はあなたのために修正したり変更したりすることができます。 – Chris

+1

'$( 'option')のようなことができます。 |(Employee | File Name)$ /。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); 
    } 
    } 

} 
関連する問題