2012-12-19 192 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

問題是如何忽略最後的逗號! –