Подтвердить что ты не робот

Использование функции .keyup для автоматического автоматического завершения

Использую .keyup для фильтрации моего авто.

Однако он только позволяет мне ввести первую цифру. поэтому, если мои данные "Яблоко"

когда я набираю A - он показывает Apple, но я не могу набрать "AP", поскольку "P" исчезает.

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

Код:

<input id="ac" /> <span></span>

var validOptions = "@Url.Action("SerialProdNumStockSiteAutoComplete", "Ajax")?stocksitenum=LW&model=" + $("#Form_Prod_Num").val();
previousValue = "";

     $('#ac').autocomplete({
            autoFocus: true,
            source: validOptions
        }).keyup(function () {
            var isValid = false;
            for (i in validOptions) {
                if (validOptions[i].toLowerCase().match(this.value.toLowerCase())) {
                    isValid = true;
                }
            }
            if (!isValid) {
                this.value = previousValue
            } else {
                previousValue = this.value;
            }
        });

Это работало, когда я использовал фиктивные данные, но когда я изменил это на url.action, он работал только для первой буквы, а не для всего слова.

У меня есть скрипка, что работает - Однако, когда я добавил свой URL-адрес, он принял только первую букву. (Существует около 5000 значений)

4b9b3361

Ответ 1

В скрипте вы устанавливаете свои доступные параметры в виде массива:

var validOptions = ["Bold", "Normal", "Default", "100", "200"]

если вы берете результат своего действия (как вызвано напрямую) и заменяете его на jsfiddle, вы получите (взяв с комментария):

var validOptions = "B061030029,LL-XXX,"

или, в зависимости от того, включены ли кавычки в комментарии (маловероятно):

var validOptions = ""B061030029,LL-XXX,"" 

в любом случае, это не одно и то же.

Используйте источник просмотра в браузере, чтобы узнать, что отображается в Url.Action.

Вы можете изменить свое действие, чтобы вернуть строку:

"[\"B061030029\", \"LL-XXX\" ]";

который затем дал бы:

var validOptions = ["B061030029", "LL-XXX"]

который соответствует исходным параметрам.

Для аккуратности вы можете сделать это с помощью PartialView и по-прежнему продолжать возвращать значения из действия в виде строкового списка и форматировать в частичном представлении, а не в контроллере.