проблема с автозаполнением jquery - PullRequest
0 голосов
/ 24 декабря 2009

Я использую автозаполнение jquery для заполнения списка пользователей. В document.ready я вызываю автозаполнение JSON, чтобы получить список пользователей.

Когда я набираю действительное имя пользователя (или что-либо еще) в текстовых полях до завершения автозаполнения вызова json, на нем не отображаются параметры автозаполнения (автозаполнение также не работает для допустимых символов).

И когда я нажимаю за пределами текстового поля и снова пытаюсь, это работает ..

В чем может быть проблема с автозаполнением, когда я пытаюсь ввести текст до завершения автозаполнения вызова json?

Код для автозаполнения:

 $.getJSON("/User/GetAllUsers/?t=" + new Date(), {},
        function(data) {
            if (data != null) {
                $("#UserName").autocomplete(data, { mustMatch: false, matchContains: 4, max: 50,
                    formatItem: function(row) {
                        return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]";
                    },
                    formatResult: function(row) {
                        return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]";
                    }
                });
            }
        });

Ответы [ 2 ]

0 голосов
/ 24 декабря 2009

Метод обратного вызова, который устанавливает часть автозаполнения, выполняется только после завершения вызова getJSON.

Вы можете сделать одну из двух вещей: 1. Создайте механизм блокировки, который блокирует пользовательский интерфейс / текстовое поле до завершения вызова json. По сути, когда завершение автозаполнения завершено. 2. Используйте плагин автозаполнения для прямого запроса метода GetAllUsers:

$("#UserName").autocomplete("/User/GetAllUsers/?t=" + new Date(), { mustMatch: false, matchContains: 4, max: 50,
                formatItem: function(row) {
                    return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]";
                },
                formatResult: function(row) {
                    return row.FirstName + " " + row.LastName + " [" + row.LoginName + "]";
                }
            });

Затем вам нужно будет отфильтровать пользователей на стороне сервера, используя queryParameter (q), который будет содержать искомое условие.

0 голосов
/ 24 декабря 2009

Если вы введете текстовое поле, а затем вызов JSON завершится, и после настройки автозаполнения ..

РЕДАКТИРОВАТЬ: забудь, что я сказал: Вы можете вручную запустить поиск с помощью метода search

Попробуйте вместо этого вызвать событие изменения в текстовом поле? http://docs.jquery.com/Events/trigger

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...