0


0

結果にhtmlを追加するjQuery

私の入力配列には:

results[num_row] = {
    'title': title,
    'url': url,
    'support_url': support_url,
    'description': description,
    'contacts': contacts
};

結果を取得します。

function formatItem(item){
   var highlight = $.Autocompleter.defaults.highlight;
   var temp = '' + highlight(item.title, term)  + '';
   temp += '
  ' + item.description;
   return temp;
}

function prep(){
$("#searchbox").autocomplete(results,{
    width:500,
    scroll:false,
    formatItem: formatItem,
    highlight: false

}).result(function(event, item) {
    location.href = item.url;
});
}

cssを使用して色をオーバーライドできるように、返されるものにタグを追加できるようにしたいと思います。 たとえば、次のようなことをしたいと思います。

formatItem: function(item) {
    var temp = '' + item.title +  + '
  ' +  + item.description + ;
    return temp;
}

そのようにインラインでタグを追加しようとすると、入力検索基準がそのリテラルタグを持つように変更されます。 そのため、「検索文字列」ではなく「検索文字列」を実際に入力して検索する必要があります。

ありがとうございました。

1 Answer


0


その後、関数は `options.highlight`を介して実行されます。 ソース文字列を返すハイライト関数を指定してみてください:

$("#searchbox").autocomplete(results, {
    formatItem: function(item, foo, bar, term) {
        var highlight = $.Autocompleter.defaults.highlight;
        var temp = '' + highlight(item.title, term)  + '';
        temp += '
  ' + item.description;

        return temp;
    },

    highlight: false
}).result(function(event, item) {
    location.href = item.url;
});

XSS攻撃を防ぐために、必ず `item.title`をエスケープしてください!