JQuery-UI автозаполнение спорадического поведения - PullRequest
0 голосов
/ 12 августа 2011

Ниже приведен код моего автозаполнения. Проблема в том, что он в основном работает. Скажем, у меня есть куча результатов, таких как test1, test2, test3 и т. Д. Если я наберу «t», они всплывают, а когда я добавлю «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 ]

1 голос
/ 12 августа 2011

Глядя на свой код вы делаете 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
});
0 голосов
/ 12 августа 2011

Вот ответ: https://gist.github.com/1140631, который должен решить эту проблему.

РЕДАКТИРОВАТЬ: Мне также было интересно, почему вы динамически предварительный выбор результатов, вы не можете сразу получить полный список?Или это слишком много данных?

...