2011-06-18 26 views
0

我正在使用JQuery自動完成併發送帶有「label」和「value」的響應。 我試圖讓標籤具有格式化的HTML。 json_encode轉義我試圖通過的html格式。通過將HTML放入「label」響應中實現JQuery自動完成格式化

我應該這樣做嗎?如何使json_encode不能轉義html格式(它將「/」更改爲「\ /」)?

示例代碼:

$return[$i]['label'] = $row['text']; 
$return[$i]['label'] = "<span style='font-weight:bold;'>" . $row['text'] . "</span> - " . row['name']; 

json_encode($return); 

,當我剛剛手工檢查網址迴應,我可以看到他的逃脫「」爲「< \/SPAN>」

+0

請張貼您當前的代碼(可能作爲[jsfiddle](http://jsfiddle.net/)示例),以便我們可以看一看。 – Kokos

回答

4

我不知道哪個汽車完成你正在使用。如果你正在使用http://jqueryui.com/demos/autocomplete/,你的問題是不是JSON標籤默認不

標籤始終被視爲文本,如果你想在標籤爲HTML,您可以使用Scott González' html extension被視爲支持HTML。演示全部關注源選項的不同變體 - 尋找與您的用例相匹配的演示,並查看代碼

您可以這樣做。代碼正在做的是以黃色顯示自動填充匹配文本。

function autoCompleteRender(ul, item) { 
    var searchTerm = this.term; 
    var itemLabel = item.label; 
    itemLabel = itemLabel.replace(new RegExp("(" + searchTerm + ")", "gi"), '<strong class="itemhover">$1</strong>'); 
    return $("<li></li>").data("item.autocomplete", item).append("<a>" + itemLabel + "</a>").appendTo(ul); 
} 


$(yourselector).autocomplete({ 
     source: function(request, response) { 
      //your source 
     } 
    }).data("autocomplete")._renderItem = autoCompleteRender; 
+0

我得到「Uncaught TypeError:無法設置未定義的屬性'_renderItem'請參閱http://jsfiddle.net/Vjbd4/ –

+1

關鍵是使用數據(」ui-autocomplete「)而不是數據(」自動完成「) –