Задать вопрос
@Ankozar

Как правильно сделать выбор региона из базы данных при вводе названия в поле?

Вопрос кривой, но я просто не знаю, как правильно это называется.

Суть:
6051b30523e5a892646142.png

Юзер выбирает регион. Начинает вводить название в поле, аяксом ищу нужное значение в БД.

У меня сейчас код такой:
<input list='inputRegion' class="inputRegion">
<datalist id='inputRegion'>
</datalist>


$('input.inputRegion').keyup(function(e) {
    //console.log(e.which);
    if(e.which != 32){
        $("#inputRegion").empty();
        chooseRegion();
    };
});

function chooseRegion() {
    $.ajax({
            type: 'POST',
            url: 'php/chooseRegion.php',
            data: {chooseRegion: $("input.inputRegion").val()},
            success: function (response) {
                var result = $.parseJSON(response);
                $("#inputRegion").append("<option value='" + result + "'>");
                // console.log(result);
            }
        });
}


Вопросов три.
1. Правильно ли выбраны html-тэги? Имею в виду, что это input.list + datalist. Может, select нужен?
2. Правильная реализация? Или как-то по-другому это делается?
3. Как поймать выбор, когда юзер нажмёт на нужный регион? (тут он один пока, но их куча будет).
  • Вопрос задан
  • 187 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
@haveacess
Правильно ли выбраны html-тэги? Имею в виду, что это input.list + datalist. Может, select нужен?

У инпута тег "list" избыточен, его необходимо убрать. datalist заменить на select.
---
Реализация нормальная, но если хотите заморочится - можно отправлять запрос только в момент когда юзер перестал печатать. Что подобное обсуждается тут - Как сделать ajax поиск с keyup задержкой для уменьшения нагрузки? / https://learn.javascript.ru/task/debounce
---
Выбор поймать так же как и в инпуте.
Только если вы в инпуте ловите ивент keyup, то в select будет change\onchange https://www.google.com/search?q=onchange+select+ev...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы