Я создал jQuery UI - autocomplete
в котором я добавил следующие условия:
Здесь я ошибся, что, когда я набираю точный вариант, он не выбирается.
Например:
var json = ["JOAQUIN", "BERNARDINO", "MODOC", "ALASKA", "MADERA", "ANDERSON",
"Kingston", "Kala", "Aka"];
- Я печатаю
aka
, это не прием.- Я тоже попробовал
Aka
, но он не приемлем.
Как воспроизвести:
После ввода вышеуказанного текста в
textbox
простоfocusout
- значение будет опустошено. Я хочу обрабатыватьaka = Aka = AKA
(с выбором/без выбора из списка опций)
PS: Я не прошу ввести код, я сделал небольшую ошибку, и мне нужно, чтобы она была правильной.
Вот моя скрипка, где вы можете легко воспроизвести исключение.
Как я могу изменить свой код для работы следующим образом. Пожалуйста, поделитесь своими предложениями и укажите мне в правильном направлении, чтобы привести в порядок условия.
Что делать, если вы измените событие, чтобы закрыть, а не событие изменения. Затем проверьте, находится ли значение в массиве, и если не очистить контейнер. Это потребует сопоставления капитализации при вводе значения. Если вы хотите игнорировать капитализацию, вы можете сделать преобразование 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("");
}
}
});
Насколько я вижу из документации, свойство UI устанавливается только при выборе элемента выпадающего списка (нажатие), поэтому вам нужно будет добавить к вашей проверке в функции изменения, чтобы вручную проверять значения.