2011-11-04 42 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 ;)