Автозаполнение пользовательского интерфейса jQuery - соответствующая опция не выбрана в focusOut

0

Я создал jQuery UI - autocomplete в котором я добавил следующие условия:

  1. Список отсортированных опций
  2. обязательный выбор варианта

Здесь я ошибся, что, когда я набираю точный вариант, он не выбирается.

Например:

var json = ["JOAQUIN", "BERNARDINO", "MODOC", "ALASKA", "MADERA", "ANDERSON", 
                                                  "Kingston", "Kala", "Aka"];
  1. Я печатаю aka, это не прием.
  2. Я тоже попробовал Aka, но он не приемлем.

Как воспроизвести:

После ввода вышеуказанного текста в textbox просто focusout - значение будет опустошено. Я хочу обрабатывать aka = Aka = AKA (с выбором/без выбора из списка опций)

PS: Я не прошу ввести код, я сделал небольшую ошибку, и мне нужно, чтобы она была правильной.

Вот моя скрипка, где вы можете легко воспроизвести исключение.

Как я могу изменить свой код для работы следующим образом. Пожалуйста, поделитесь своими предложениями и укажите мне в правильном направлении, чтобы привести в порядок условия.

Теги:
jquery-ui-autocomplete
jquery-autocomplete

2 ответа

2

Что делать, если вы измените событие, чтобы закрыть, а не событие изменения. Затем проверьте, находится ли значение в массиве, и если не очистить контейнер. Это потребует сопоставления капитализации при вводе значения. Если вы хотите игнорировать капитализацию, вы можете сделать преобразование json-массива в нижний регистр и значение в нижний регистр перед поиском массива.

играть на скрипке

var json = ["JOAQUIN", "BERNARDINO", "MODOC", "ALASKA", "MADERA", "ANDERSON", "Kingston", "Kala", "Aka"];
$('input').autocomplete({
    source: function (request, response) {
        var matches = $.map(json, function (json) {
            if (json.toUpperCase().indexOf(request.term.toUpperCase()) === 0) {
                return json;
            }
        });
        response(matches);
    },

    close: function(event, ui) {
        var index = jQuery.inArray($('input').val(), json);
        if (index == -1) {
            $('input').val("");           
        }
    }
});
  • 0
    +1 это хороший момент.
0

Насколько я вижу из документации, свойство UI устанавливается только при выборе элемента выпадающего списка (нажатие), поэтому вам нужно будет добавить к вашей проверке в функции изменения, чтобы вручную проверять значения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню