Как исправить автозаполнение текстового поля в jQuery?

#jquery #jquery-ui #autocomplete #jquery-ui-autocomplete #jquery-events

#jquery #jquery-пользовательский интерфейс #автозаполнение #jquery-пользовательский интерфейс-автозаполнение #jquery-события

Вопрос:

Я использую jquery.autocomplete.js для автозаполнения текстового поля.

Я получаю всю запись местоположения при событии нажатия клавиши.
событие нажатия клавиши Я передал текстовое значение текстового поля location.

для эквалайзера. Я пишу текст «Lo«, затем он получает все записи, начинающиеся с «Lo», каждый раз, когда я получаю новое предложение из базы данных SQL.

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

В моем автозаполнении я вижу, что в списке предложений автозаполнения отображается более одного списка предложений.. как это исправить..
Ниже я написал свой код.
<asp: текстовое поле runat=»server» class=»location» ID=»txtLocation» > </asp: текстовое поле>

 <script>
$('#<%= txtLocation.ClientID %>').onkeypress(function () {
  if ($('#<%= txtLocation.ClientID %>').val().length >= 1) {
    GetCitiesLikeList($('#<%= txtLocation.ClientID %>').val());
  }
});

function GetCitiesLikeList(objcity) {
    if (objcity != null amp;amp; objcity != "") {        
         $.ajax({
            type: "POST",
            url: "http://www.myweburl.com/webservices.asmx/GetCitiesLikeList",
            data: "{ City : '"   objcity   "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) { 
                if (msg.d != null amp;amp; msg.d != "") {            
                    cities = msg.d.split(",");                    
                    $(".location").autocomplete(cities, {
                        matchContains: true,
                        minChars: 0
                    });
                }
                else
                 $(".location").unautocomplete();
            },
            error: function(xhr, ajaxOptions, thrownError) {return false;}
        });
    }
    else
        $(".location").unautocomplete();
}
</script>
  

посмотрите на это изображение, в чем проблема в моем списке предложений по автозаполнению.

введите описание изображения здесь

Дайте мне решение для этого.

Ответ №1:

Вам не нужно использовать автономный плагин автозаполнения, поскольку теперь он является частью jQueryUI.

Ответ №2:

Я не уверен, что понимаю то, что вы говорите, на 100% правильно, но всего несколько вещей:

  1. Вам не нужно вручную ждать keypress события для автозаполнения пользовательского интерфейса jQuery. Это уже делает это за вас, когда вы вызываете .autocomplete() элемент.
  2. Автозаполнение также имеет функциональность для обработки заполнения элемента с помощью AJAX, которую вы делаете здесь.

Итак, я предполагаю, почему вы получаете двойные списки, потому что вы технически делаете то, что автозаполнение делает для вас снова (вручную).

Комментарии:

1. Я извлекаю запись в событиях нажатия клавиши, поэтому она извлекается более одного раза. итак, я получаю несколько <div class=»ac_results»></div> в исходном коде html.. итак, я это исправил.