jQueryオートコンプリートプラグインを使用していますが、結果の強調表示に問題があります。一致するものが見つかったが、入力されたキーワードにスペースが含まれている場合、強調表示はありません。例:
search = "foo"、result = "foo bar"、displayed = " foo bar"
search = "foo ba"、result = "foo bar"、displayed = "foo bar"
そのため、オートコンプリート関数のハイライトオプションを使用してこれを修正しようとしています。このオプションでは、関数を使用して、結果に対してカスタム処理を実行できます。現在私はこれを持っています:
$('.autocomplete').autocomplete('getmatch.php', {
highlight: function(match, keywords) {
keywords = keywords.split(' ').join('|');
return match.replace(/(get|keywords|here)/gi,'<b>$1</b>');
}
});
replace関数は、文字列内の一致するすべての単語を太字のバージョンに置き換えます。これは機能します。ただし、キーワードをその関数に組み込む方法がわかりません。私はそれらを分割してから「|」で結合するので、「foobar」は「foo|bar」のようになります。しかし、このようなものは機能していないようです:
return match.replace(/(keywords)/gi,'<b>$1</b>'); // seen as text, I think
return match.replace('/'+(keywords)+'/gi','<b>$1</b>'); // nothing either
何か案は?