2014-07-07 113 views
0

嗨我已经阅读了很多关于这个答案,并按照指示,但它只是不适合我。
JqueryUI自动完成,自定义的renderItem不起作用

$(document).ready(function(){<br> 
    $(".header-search-box").autocomplete({ 
    source: function(req,res) { 
     $.ajax({ 
      url: "http://localhost:3000/autocomplete/"+req.term, 
      dataType: "jsonp", 
      type: "GET", 
      data: { 
       search: req.term 
      } 
     }); 
    }, 
    select: function(event, ui) { 
    } 
}).data('ui-autocomplete')._renderItem = function(ul,item){ 
    console.log('I am coming back') 
    return $("<li>").append("<a>"+item.model+"</a>").appendTo(ul); 
} 

});

此代码不起作用_renderItem函数甚至不会打印到控制台。

再次我按照所有的在以前的答案的建议,任何帮助,将不胜感激

编辑1

阿贾克斯成功功能是本

success: function(data) { 
       res($.map(data, function(item) { 
        return { 
         : item.make + ' ' +item.model,//text comes from a collection of mongo 
         value: item.model 
        }; 
       })); 
      }, 

我我不知道如何将其转换成数据对象...

+0

您尚未设置源函数响应... – j809

+0

@ j809我已将它用于测试目的进行了注释,并在上面的代码中将其删除。让我补充说...我评论的原因是我不知道如何将响应分配给数据。 – Babar

回答

1

我试着用本地数组源自定义_renderItem

它很好地工作,并提供警报设置。

到这里看看:http://jsfiddle.net/XJ5En/

JS:

var tags = ["abc","bas","cqwe"]; 
$(".header-search-box").autocomplete({ 
    source: tags 
}).data('ui-autocomplete')._renderItem = function(ul,item){ 
    alert('I am coming back'); 
    return $("<li>").append("<a>"+item.value+"</a>").appendTo(ul); 
}; 

必须有一些错误分配给源的响应。请检查它是否正确。

+0

你的回答让我朝正确的方向发展,因此选择它作为正确的答案。谢谢 – Babar