ui自动完成:通过回调函数设置源不起作用

链接到小提琴: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作为结果。

那么,我错过了什么?

提前致谢。


在回调函数中,由你来做过滤。

文档摘录:

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

一个请求对象,带有一个名为“term”的属性,它指向文本输入中当前的值。 例如,当用户在城市字段中输入“新哟”时,自动完成词将等于“新哟”。 响应回调,期望一个参数包含数据以向用户建议。 这些数据应根据提供的术语进行过滤 ,并且可以采用上述任何用于简单本地数据(String-Array或带有标签/值/两个属性的对象数组)的格式。 在请求期间提供自定义源回调以处理错误时,这很重要。 即使遇到错误,您也必须始终调用响应回调。 这可确保小部件始终具有正确的状态。


看代码:

$('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.
    }
});​

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

在你的功能中:

source : function(request, response){}

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

链接地址: http://www.djcxy.com/p/11195.html

上一篇: ui autocomplete: set source by callback function not working

下一篇: adding large amount of elements to DOM