Проблема с автозаполнением jQuery - неправильная обработка массивов

StackOverflow https://stackoverflow.com/questions/1608134

Вопрос

Я использую автозаполнение 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, который вы используете?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top