2

我有一個很好的完整日曆腳本。我有它的一些過濾器,這主要有以下形式:如果推送包含/匹配字符串的值的條件

$("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()); 
    } 
}); 

然而else if語句應該檢查檢查值「標籤」被包含在結果集中,不是結果集的唯一值(如==所示)。

現在我只能過濾只包含checked-tag值的結果。但我想過濾這些,其中有標籤價值等等。

我認爲這是要與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/)

0

請嘗試此條件。

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

如果你的數據是一個字符串,例如:tag filter1 filter2 filter3,您可以使用indexOf -function(manual

代碼:

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

indexOf返回-1如果文本沒有找到。

0

您可以使用:

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

,或者如果你想有字的硬編碼(例如,在本例中,字測試):

var re = /\btest\b/i 

實例展示以下匹配項:

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()); 
} 
相關問題