2014-02-27 64 views
0

我試圖突出顯示搜索條件,它運行良好。問題是我想避免使用1或2個字符的單詞或「the」和「and」。jQuery檢測字符串的長度

如果我使用

var term = $('#q').val().split(/\s+/); 
    if(term.length < 3){ 
    $('p').highlight(term); 
    } 

將需要輸入值整個字符串,所以它有更多然後3個字母。

所以我想我需要使用

if(term:contains('and')){} 

但訣竅是如何將我未強調?

demo

+0

higlihgt函數是從https://raw.github.com/bartaz/sandbox.js/master/jquery.highlight.js – SamotnyPocitac

回答

1

您檢查字符串array的長度,而不是實際上每個string的長度,這應該工作:

$(document).ready(function() { 

    var term = $('#q').val().split(/\s+/); 
    for(var i=0;i<term.length;i++) 
    { 
     if(term[i].length > 3) 
     $('p').highlight(term[i]);  
    }   
}); 

FIDDLE http://jsfiddle.net/eayan/16/

UPDATE: 要允許規定設立的允許的話一個陣列,即:

var allowed = ["xp","try"]; 

變化,如果到:

if(term[i].length > 3 || $.inArray(term[i],allowed) >= 0) 

爲不區分大小寫您得做點歌曲

Fiddle - allowed words

+0

非常好,非常感謝 – SamotnyPocitac

+0

有沒有辦法排除一些我需要突出顯示但字母較少的單詞。即XP? – SamotnyPocitac

+0

檢查我最後的編輯 –

1

您可以替換刪除的話,你不希望:

var term = $("#q").val(); 

var unwantedWords = ['the', 'and', 'this', 'that', 'a', 'an']; 

// remove unwanted words 
for (var i = 0; i < unwantedWords.length; i++) { 
    term = term.replace(new RegExp("\\s+" + unwantedWords[i]), ""); 
} 

term = term.split(/\s+/); 

$('p').highlight(term); 

Updated Fiddle

+0

優秀,非常感謝。我希望我能給出兩個很好的答案! – SamotnyPocitac

+0

但還有一個問題。我將如何做相反的事情。現在我隱藏小於3個字母的單詞,但是如果我需要一些只有2個字母的單詞? – SamotnyPocitac

+1

@SamotnyPocitac查看我更新的解決方案。您可以創建一個不需要的單詞數組,並刪除它們中的每一個。這使得它更具可擴展性。如果你發現你不想要的其他單詞,你可以將它們添加到數組中。這也意味着它不依賴於單詞的長度,而是依賴於單詞本身(例如,文章adjetives等); – Bic