#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% правильно, но всего несколько вещей:
- Вам не нужно вручную ждать
keypress
события для автозаполнения пользовательского интерфейса jQuery. Это уже делает это за вас, когда вы вызываете.autocomplete()
элемент. - Автозаполнение также имеет функциональность для обработки заполнения элемента с помощью AJAX, которую вы делаете здесь.
Итак, я предполагаю, почему вы получаете двойные списки, потому что вы технически делаете то, что автозаполнение делает для вас снова (вручную).
Комментарии:
1. Я извлекаю запись в событиях нажатия клавиши, поэтому она извлекается более одного раза. итак, я получаю несколько <div class=»ac_results»></div> в исходном коде html.. итак, я это исправил.