2014-02-27 45 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