Проблема с автозаполнением jQuery - неправильная обработка массивов
-
05-07-2019 - |
Вопрос
Я использую автозаполнение jQuery и MVC для заполнения выпадающего списка набором имен столбцов.
Всякий раз, когда пользователь изменяет значение выпадающего списка в моей форме, я делаю запрос к своему контроллеру, чтобы вернуть новый список столбцов (в виде массива, завернутого в результат JSON), который заполнит мои поля автозаполнения.
Моя проблема в том, что автозаполнение не делает различия между словами и вместо этого настаивает на том, чтобы делать это символом c, h, a, r, a, c, t, e, r.Это очень раздражает.Вот этот код:
function PopulateColumnsList(list) {
$(".columnDropdown").setOptions({ data: list });
}
$(document).ready(function() {
$(".columnDropdown").autocomplete("", {
width: 320,
max: 14,
highlight: false,
minChars: 0,
scroll: true,
scrollHeight: 300
});
$("#Data").change(function() {
$.ajax({
url: "/Home/ColumnNamesForDataSelect",
type: "GET",
data: { DataSelectID: parseInt($('#Data').val()) },
success: PopulateColumnsList
});
});
});
Get Возвращает этот ответ:
["Памятка","Баланс"]
Но мое автозаполнение покажет каждую из них в виде отдельных букв, а не двух:Памятка, Баланс.Я думал, что это было правильно, поскольку пример кода показывает аналогичный способ возврата результата.
Есть какие-нибудь идеи?
Заранее благодарю.
Решение
Можете ли вы показать пример того, чего вы хотите?Я не слежу за этим на сто процентов.
Мое автозаполнение - это просто пользователь начинает вводить текст в текстовом поле, и оно просматривает вводимые буквы и возвращает возможные слова с этим результатом.
То, как я это делаю, заключается в следующем:
// JavaScript file
$("#id").autocomplete("AutoFill", { delay: 1 });
// view
public ContentResult AutoFill(string q)
{
var result = // go to database and grab all words that Start with whatever is in q.
string sendBack = null;
for (int i = 0; i < result.Count; i++)
{
sendBack += result[i] + Environment.NewLine;
}
return Content(sendBack);
}
Не уверен, что это вам вообще поможет.
Другие советы
Я понимаю, что это может быть безумным разговором, и это не очень похоже на ответ, но поскольку кажется, что он повторяет элементы в каждом нижнем индексе ответа, вы пробовали обернуть свой ответ в другой массив, например, [["Memo","Balance"]]
?
Ну, вы привязываетесь к событию onChange(), которое будет состоять из букв по буквам.Я столкнулся с чем-то подобным и хотел получить всю ценность целиком.Я справился с этим, переопределив функцию parse() и указав свой XML-анализатор / формат, затем я переопределил функцию result() для анализа данных row[], которые я вернул в функцию parse().
Как вы используете POST с jQuery Autocompleter?
Таким образом, в принципе, у меня всегда есть строка [] с данными и именем из выборки (вы тоже можете использовать JSON).
И вам также нужно будет переопределить функцию formatItem() для обработки вашего нового массива row[].
Существует несколько средств автозаполнения jQuery.Было бы полезно, если бы вы указали, какой из них вы используете.Например, это не выглядит как http://docs.jquery.com/Plugins/Autocomplete/setOptions является ли setOptions, который вы используете?