使用带有非标准选项的jQuery自动完成?

时间:2011-11-04 01:54:00

标签: javascript jquery ajax json jquery-ui-autocomplete

我想在Drupal项目中使用jQuery的自动完成功能来自动查找具有给定标题的节点(内容片段)。我找不到任何与我想要做的选项匹配的例子,如下所示:

  1. URL需要符合模式:/ api / node / title / {无论用户输入什么}
  2. 当结果以JSON格式返回时,标题需要在自动完成列表中使用
  3. 单击结果时,包含标题的样式段落将显示在文本框上,但实际上将包含所选节点的节点ID(nid)。
  4. 这是我到目前为止所做的:

    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);
    };
    

    一旦选择了一个元素,我甚至不用担心该做什么 - 这个URL会以/ api / node / 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"
    }
    

1 个答案:

答案 0 :(得分: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 ;)