使用jQuery自动完成与非标准选项

Using jQuery autocomplete with non-standard options?

本文关键字:非标准 选项 jQuery 使用      更新时间:2023-09-26

我想在Drupal项目中使用jQuery的自动完成功能来自动查找具有给定标题的节点(内容块)。我找不到任何与我想做的相匹配的选项用法的例子,这是:

  1. URL需要符合以下模式:/api/node/title/{无论用户键入什么}
  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);
};

我甚至还没有得到担心做什么一旦一个元素被选中- 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"
}

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

for 2)我不明白你所说的"title"是什么意思,但它肯定可以在$.get的响应中处理对于3)事件处理程序可以做到这一点(一旦我理解了你可怕的"标题")。像这样:

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

检查和演奏小提琴;)