jquery-ui自动完成零星的行为

时间:2011-08-11 20:01:17

标签: jquery jquery-ui jquery-ui-autocomplete

以下是我的自动填充功能的代码。问题是它主要是有效。假设我有一堆结果,如test1,test2,test3等。如果我输入“t”它们会弹出,当我把e放入“te”时它们会消失。然后,如果我放入“s”,它会进一步缩小它。它也不总是第二个字母。它似乎是零星的。请帮忙。我已经确认回来的数据是可靠的,所以后端没什么。

        //Server autocomplete
        $("#txtSearchServer").keyup(function (event) {
            $.ajax({
                url: 'edit/EditService.svc/SearchServers',
                type: 'GET',
                data: { 'term': $("#txtSearchServer").val() },
                dataType: 'json',
                success: function (data) {
                    var listServers = [];
                    $.map(data.d, function (item) {
                        ///working here to do server autocomplete!!!!!!!
                        listServers.push(item.ServerName);
                        $("#txtSearchServer").autocomplete({
                            source: listServers
                        });
                    });
                },
                error: function (a, b, c) {
                    $('.Toast').html('Error Retreiving Servers for autocomplete!');
                }
            });
        });

2 个答案:

答案 0 :(得分:1)

查看您正在执行asp.net的代码

这应该适合你:

function AutocompleteJSONParse(data) {
    var rows = new Array();
    var rowData = null;
    for (var i = 0, dataLength = data.length; i < dataLength; i++) {
        rowData = data[i];
        rows[i] = {
            value: rowData.ServerName,
            label: rowData.ServerName
        };
    }
    return rows;
};
$("#txtSearchServer").autocomplete({
    source: function(request, response) {
        var pString = '{"term":"' + request.term + '"}';
        $.ajax({
            url: 'edit/EditService.svc/SearchServers',
            type: 'GET',
            dataType: "jsond",
            type: "POST",
            contentType: "application/json",
            converters: {
                "json jsond": function(msg) {
                    return msg.hasOwnProperty('d') ? msg.d : msg;
                }
            },
            data: pString,
            success: function(data) {
                var rows = AutocompleteJSONParse(data);
                response(rows);
            }
        });
    },
    error: function(a, b, c) {
        $('.Toast').html('Error Retreiving Servers for autocomplete!');
    },
    minLength: 2,
    delay: 1000
});

答案 1 :(得分:0)

答案是:https://gist.github.com/1140631应该解决它。

编辑:我想知道你为什么动态预取结果,你不能马上获得完整列表吗?或者它是否有大量数据?