jQuery Autocomplete Проблема - Не правильно обрабатывает массивы - PullRequest
0 голосов
/ 22 октября 2009

Я использую jQuery Autocomplete и MVC, чтобы заполнить выпадающий список группой имен столбцов.

Всякий раз, когда пользователь изменяет значение DropDownBox в моей форме, я обращаюсь к своему контроллеру с просьбой вернуть новый список столбцов (в виде массива, завернутый в результат 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 Возвращает этот ответ:

[ "Memo", "Баланс"]

Butmy AutoComplete покажет каждую из них как отдельные буквы, а не две: Memo, Balance. Я думал, что это правильно, так как пример кода показывает аналогичный способ возврата результата.

Есть идеи?

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 23 октября 2009

Возможно ли вам показать пример того, что вы хотите? Я не следую за сто процентов.

Мое автозаполнение - просто пользователь начинает вводить текстовое поле, просматривает набираемые буквы и возвращает возможные слова с таким результатом.

То, как я это делаю, таково:

// 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);
}

Не уверен, поможет ли это вам вообще.

1 голос
/ 23 октября 2009

Я понимаю, что это может быть сумасшедшим разговором и не слишком много ответа, но, поскольку кажется, что он перебирает элементы в каждом нижнем индексе ответа, вы пытались заключить свой ответ в другой массив, например, [["Memo","Balance"]] ?

0 голосов
/ 23 декабря 2009

Существует несколько автозаполнений jQuery. Было бы полезно, если бы вы упомянули, какой из них вы используете. Например, не похоже, что http://docs.jquery.com/Plugins/Autocomplete/setOptions это набор параметров, которые вы используете?

0 голосов
/ 22 октября 2009

Что ж, вы привязываетесь к событию onChange (), которое будет по буквам. Я столкнулся с чем-то похожим, и хотел всю ценность. Я обработал это, переопределив функцию parse () и указав свой синтаксический анализатор / формат XML, а затем перезаписал функцию result (), чтобы проанализировать данные row [], которые я установил обратно в функцию parse ().

Как использовать POST с автозаполнением jQuery?

Так что, в основном, у меня всегда есть строка [] с данными и именем из выбора (вы тоже можете сделать JSON).

И вам также потребуется переопределить функцию formatItem () для обработки вашего нового массива row [].

...