2009-12-24 3 views
0

Я использую автозаполнение jquery, чтобы заполнить список пользователей. В document.ready я вызываю автозаполнение json, чтобы получить список пользователей.Проблема с jquery autocomplete

Когда я ввожу правильное имя пользователя (или что-либо) в текстовые поля перед завершением автозаполнения вызова 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 + "]"; 
        } 
       }); 
      } 
     }); 
+0

Можете ли вы разместить код, возможно, coument.ready, где вы связываете автозаполнение? – Pharabus

ответ

0

Если вы наберете в текстовом поле, а затем заканчивает JSON вызов, и после установки вашего автозаполнения ..

EDIT: забыть то, что я сказал: You может вручную инициировать поиск с помощью метода search

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

+0

триггер также не работает. он не показывает значения, если я не сосредоточусь на каком-то другом элементе управления и не вернусь к элементу управления имени пользователя. – Prasad

+0

Можете ли вы затем размыть() и фокус()? –

0

Метод обратного вызова, который устанавливает кусок автозаполнения, выполняется только после завершения вызова 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 (д), который будет содержать необходимый срок поиска.