2011-11-04 60 views
0

我想在一個Drupal項目中使用jQuery的自動完成功能來自動查找具有給定標題的節點(多條內容)。我不能完全找到匹配什麼,我試圖做的,這是下面的那個選項使用的任何例子:使用jQuery自動完成與非標準選項?

  1. URL必須符合的模式:/ API /節點/標題/ {無論用戶鍵入}
  2. 當結果作爲JSON返回時,標題需要在自動完成列表中使用
  3. 單擊結果時,包含標題的樣式化段落將出現在文本框上,但它實際上包含所選節點的節點id(nid)。

這是我到目前爲止有:

jQuery(this).autocomplete({ 
    source: '/api/node/title/'+jQuery(this).val(), 
    minLength: 2 
}).data("autocomplete")._renderItem = function(ul, item) { 
    return jQuery('<li />') 
     .data("item.autocomplete", item) 
     .appendTo(ul); 
}; 

我還沒有讀懂了擔心一旦被選擇的元素做什麼 - 網址是走出去爲/ API /節點/ title?term = {blank},即使我得到JSON結果,也沒有任何內容出現。任何建議,或類似用法的例子? jQuery UI網站上用於自動完成的示例並不是特別有用。

編輯:這是一個預期的響應的例子。

{ 
    "nid":"2", 
    "vid":"2", 
    "type":"lorem", 
    "language":"und", 
    "title":"Grid Computing", 
    "uid":"0", 
    "status":"1", 
    "created":"1320092886", 
    "changed":"1320273538", 
    "comment":"1", 
    "promote":"1", 
    "sticky":"0", 
    "tnid":"0", 
    "translate":"0" 
} 
+0

請你後你從URL期待的迴應的例子,並定義您的標題是什麼意思? – roselan

回答

4

1),你可以使用一個回調的源

$('input').autocomplete({ 
    source: autoDrupal, 
    minLength: 2}); 

function autoDrupal(requestObject, responseCallback) { 
    var url = '/api/node/title/' + requestObject.term; 
    $.get(url, function(data) { 
     // check my fiddle to transform drupal response in autocomplete result ;) 
     responseCallback(data); 
    }); 
}; 

2)我不明白你所說的「標題」的意思,但它一定能夠在應對處理$ .get 3)事件處理程序可以做到這一點(一旦我理解了你可怕的「標題」)。類似的東西:

$('ul.ui-autocomplete').delegate('li', 'click', function() { 
    $('#stuff').css('color', 'red'); 
}) 

check and play with this fiddle ;)