3

小さなプラグインを使用して、フォーム内の入力フィールドからテキスト文字列を強調表示します。

JavaScriptテキストハイライトjQueryプラグイン

コードを少し変更して、ユーザーが複数のキーワードを強調表示するコンマで分割することにより、入力フィールドに複数のstrimgを追加できるようにしました。

これはこのインスタンスでうまく機能します:stack、overflow、js

ただし、stack、overflow、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

2 に答える 2

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]);
    }
}
于 2012-12-19T13:42:30.613 に答える
1

これが、文字列の最後のコンマを削除する方法です。

var str = "stack,overflow,js,"; 
if(str.charAt( str.length-1 ) == ",") {
  str = str.slice(0, -1);
}
于 2012-12-19T13:45:03.027 に答える