2012-12-19 178 views
3

使用小插件从表单内的输入字段突出显示文本字符串。JS突出显示的文本字符串

JavaScript text higlighting jQuery plugin

我已经修改了代码稍微允许用户通过用逗号将突出多个关键字分裂他们多strimgs添加到输入字段。

这在这种情况下的伟大工程:堆栈溢出,JS

但是如果我是输入堆栈溢出,JS,(注意,最后一个字符串后),它挂起浏览器,变得没有反应。

我使用的代码是:

$(function() { 
    if ($("input#searchterm").val().length > 0) { 
     $("input#searchterm").addClass('marked-purple'); 
     var arrayOfKeyWords= $("input#searchterm").val().split(','); 
     for (var i=0;i<arrayOfKeyWords.length;i++) { 
      $('.message p.messagecontent').highlight(arrayOfKeyWords[i]); 
     } 
    }   
}); 

有谁有如何忽略最后一个逗号,如果用户增加了它的想法?

在此先感谢

回答

4

你可以调用highlight(),这样做之前的空值检查:

if ($("#searchterm").val().length > 0) { 
    $("#searchterm").addClass('marked-purple'); 
    var arrayOfKeyWords = $("#searchterm").val().split(','); 
    for (var i = 0; i < arrayOfKeyWords.length; i++) { 
     if (arrayOfKeyWords[i] !== "") { // ensure there is a value to highlight 
      $('.message p.messagecontent').highlight(arrayOfKeyWords[i]); 
     } 
    } 
} 

或者,如果有任何你可以去掉尾随逗号。

if ($("#searchterm").val().length > 0) { 
    $("#searchterm").addClass('marked-purple'); 
    var arrayOfKeyWords = $("#searchterm").val().replace(/,+$/, '').split(','); 
    for (var i = 0; i < arrayOfKeyWords.length; i++) { 
     $('.message p.messagecontent').highlight(arrayOfKeyWords[i]); 
    } 
} 
+0

@DaveHenderson没问题,很高兴帮助:) –

1

那如何删除字符串的最后一个逗号:

var str = "stack,overflow,js,"; 
if(str.charAt(str.length-1) == ",") { 
    str = str.slice(0, -1); 
} 
+1

然而,如果用户键入2个逗号在字符串的结尾。 ... –

+1

问题是如何忽略最后的逗号! –