jquery-ui autocomplete:通过回调函数设置源不起作用

时间:2012-09-14 13:07:00

标签: jquery jquery-ui autocomplete

链接到小提琴:http://jsfiddle.net/nEapJ/(工作)

var items = [{
   label : 'a',
   value : 'a',
},{
   label : 'b',
   value : 'b',
},{
   label : 'c',
   value : 'c',
}];

$('input').autocomplete({
    source : items
});​

此代码有效,但是当我想通过回调函数设置源代码时 然后 它无法正常工作

链接到小提琴:http://jsfiddle.net/B3RWj/(不工作)

$('input').autocomplete({
    source : function(request, response){
            response(items);
          }
});​

当我输入时,' a'然后它给出a,b,c作为结果。

那么,我错过了什么?

提前谢谢。

3 个答案:

答案 0 :(得分:2)

在回调函数中,您可以自行进行过滤..

摘自documentation

  

第三种变体,即回调,提供了最大的灵活性   可用于将任何数据源连接到自动完成。回调   有两个参数:

     

一个请求对象,其中引用了一个名为“term”的属性   到文本输入中当前的值。例如,当用户   在城市字段中输入“new yo”,自动填充术语将相等   “新哟”。一个响应回调,它需要一个参数   包含要向用户建议的数据。 应过滤此数据   基于提供的术语,可以采用任何描述的格式   上面是简单的本地数据(String-Array或Object-Array with   标签/价值/两个属性)。提供自定义时很重要   源回调以在请求期间处理错误。你必须永远   即使遇到错误也会调用响应回调。这个   确保窗口小部件始终具有正确的状态。

答案 1 :(得分:1)

见代码:

$('input').autocomplete({
    source : function(request, response){
        var term = request.term;
        var result = [];

        //make your code here to filter the item by term. 
        //put them into the result array such as.

        response(result);//this will show in the selection box.
    }
});​

答案 2 :(得分:0)

如果要使用回调函数而不是源数组或字符串,则必须添加 response($.ui.autocomplete.filter(items, request.term));

在你的函数中:

source : function(request, response){}

当您将源定义为数组或字符串时,这就是自动完成功能,但对于回调,您必须添加它。