2

私はきれいに機能する完全なカレンダースクリプトを持っています。確認値「タグ」が結果セットに含まれている場合else if文がチェックする必要がありますしかし文字列を含む/一致する値をプッシュする条件の場合

$("input[name='event_filter_select']:checked").each(function() { 
    // I specified data-type attribute in HTML checkboxes to differentiate 
    // between risks and tags. 
    // Saving each type separately 
    if ($(this).data('type') == 'risk') { 
     risks.push($(this).val()); 
    } else if ($(this).data('type') == 'tag') { 
     tagss.push($(this).val()); 
    } 
}); 

、結果セットの値だけではない:私は基本的には次の形式を持っていることのためにいくつかのフィルタを、持っています(==が示すように)。

これで、チェックされたタグ値のある結果のみをフィルタリングできます。しかし、私は、他の多くのタグ値を持っているそれらをフィルタリングしたい。

私はこれがmatch(/'tag'/)で行われると考えていますが、if文に入れる方法は私の人生を理解することができません。

誰かが正しい方向に私を導くことができたら本当にうれしいです。

+0

をあなたがもう少し欲しい出力を記述することができる - それはあなたが達成しようとしているかを理解するのは難しいですここでは –

+0

"タグ値を持つものをフィルタリングする" - 分離された 'if'文を使う – RomanPerekhrest

答えて

1

私は単にするだろう:「タグ」の文字列の先頭になければならない場合

... 
if ($(this).data('type') == 'risk') { 
    risks.push($(this).val()); 
} else if ($(this).data('type').test(/^tag/) { 
    tagss.push($(this).val()); 
} 
... 

は、これが動作します。
'タグ'が文字列のどこにでもあれば、test(/tag/)を使用できます。

var re = /\btest\b/i 

例を示す:あなたは(例では例えば、単語テスト)にハードコードされた単語を持っているしたい場合は

var re = new RegExp('\\b' + word + '\\b', 'i'); 

のか:

0

この条件で試してください。

/\btag\b/.test($(this).data('type')) 
0

あなたのデータは、文字列、例の場合:テキストがない場合は

if ($(this).data('type').indexOf("risk") != -1)) 
    //Action here. 

indexOf戻り-1tag filter1 filter2 filter3、あなたがindexOf -function(manual

コードを使用することができますが見つかりました。

0

あなたは使用することができます次の一致:

var input = document.querySelector('input'); 
 
var div = document.querySelector('div'); 
 
var re; 
 
var match; 
 

 
input.addEventListener('keyup', function() { 
 
    match = input.value.trim(); 
 
    re = new RegExp('\\b' + match + '\\b', 'i'); 
 
    
 
    if($('div').data('type').match(re)) 
 
    div.innerHTML = 'Matched the word: ' + '<strong>' + match + '</strong>'; 
 
    else div.innerHTML = 'Did not match the word: ' + '<strong>' + match + '</strong>'; 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Word to match:<input></input><br> 
 
Output: 
 
<div data-type='tag tags test'></div>
あなたのコードに組み込まれた上記の正規表現では

、それはこのようなものになります。

else if ($(this).data('type').match(/\btag\b/i) { //true for data-type that has `tag` in it. 
    tagss.push($(this).val()); 
} 
関連する問題