2010-09-28 192 views
5

我使用_renderItem修改結果列表jQuery用戶界面自動完成 - renderItem

.data("autocomplete")._renderItem = function(ul, item) { 
      var temp = item.url.substring(16, item.url.length) 
      return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append("<a>" + item.value + "<br>" + item.url + "<br>" + item.description + "<br>" + "Support URL: " + item.support_url + "<br>" + "Contact: " + "<a href=" + item.contact + ">Test</a>" + "<br />" + "</a>" ) 
      .appendTo(ul) 

這有自動標記任何東西,看起來像一個URL作爲一個href行爲。我想使整個項目的鏈接

在被這樣做舊的自動完成:

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

但這並不縫支持任何更長的時間。

有誰知道我可以:

1)使用類似的。結果功能,只是使整個項目的鏈接

2)修改_renderItem所以它是不會自動將看起來像URL的字符串轉換爲href的字符串

謝謝。

+0

您可以在自動填充的打開事件中編寫代碼來更改已呈現項目的標記嗎? – 2012-01-27 20:47:24

回答

3

當你定義自動完成,使用select函數來創建你的鏈接:

$('selector').autocomplete({ 
    source: ..., 
    select: function(event, ui) { window.location = ui.url; } 
}); 
10

看來,這在以前的版本已經改變。現在,你必須使用

$element.data('uiAutocomplete')._renderItem() 
+1

哦,非常感謝!遺憾的是[API文檔](http://api.jqueryui.com/autocomplete)沒有涉及 – 2013-03-18 13:38:20

+0

這可以工作,但當前記錄的方法是通過擴展小部件來創建自己的自定義自動填充。請參閱下面的答案。 – 2014-06-22 10:20:57

3

一種更好的方法來定製jQuery的自動完成功能是創建自己的extended version using widgets

$.widget("custom.mySpecialAutocomplete", $.ui.autocomplete, { 
    // Add the item's value as a data attribute on the <li>. 
    _renderItem: function(ul, item) { 
    return $("<li>") 
     .attr("data-value", item.value) 
     .append($("<a>").text(item.label)) 
     .appendTo(ul); 
    }, 
    // Add a CSS class name to the odd menu items. 
    _renderMenu: function(ul, items) { 
    var that = this; 
    $.each(items, function(index, item) { 
     that._renderItemData(ul, item); 
    }); 
    $(ul).find("li:odd").addClass("odd"); 
    } 
}); 

var availableTags = [ 
    "ActionScript", 
    "AppleScript", 
    "Asp", 
    "BASIC", 
    "C", 
    "C++", 
    "Clojure", 
    "COBOL", 
    "ColdFusion", 
    "Erlang", 
    "Fortran", 
    "Groovy", 
    "Haskell", 
    "Java", 
    "JavaScript", 
    "Lisp", 
    "Perl", 
    "PHP", 
    "Python", 
    "Ruby", 
    "Scala", 
    "Scheme" 
]; 

$('#myElement').mySpecialAutocomplete({ 
    source: availableTags 
}); 
+0

「更好的方法」 - 如何「只有方法有效」。我從互聯網上發現的舊語法中嘗試的一切都沒有做任何事情。這個小部件擴展語法是唯一適用於我的。感謝分享。不幸的是,'_renderItem'的jQuery文檔沒有包含像這裏給出的完整示例。 – Pistos 2014-08-06 14:59:59

相關問題