@zhen_safronov

Как решить проблему с select javascript?

Есть код. Необходимо чтобы при выборе значения происходила перезагрузка и сект стоял на элементе присвоенным в localStorage. Если в селекте идут цифры то все ок, но нежны значения городов. + в мобильной версии не происходит перезагрузка
<form id="feedbackForm2" class="form">
                   
                            <select id="fruit">
                                <option  value="Минск">Минск</option>
                                <option  value="Могилев">Могилев</option>
                                <option  value="Гродно">Гродно</option>
                                <option  value="Витебск">Витебск</option>
                                <option  value="Гомель">Гомель</option>
                                <option  value="Брест">Брест</option>
                            </select>
                        </form>
                    </div>
                    
                        <script>
                    document.getElementById("fruit").onchange = function() {
                        localStorage.setItem('gorod', document.getElementById("fruit").value);
                    }
                     
                    if (localStorage.getItem('gorod')) {
                        document.getElementById("fruit").options[localStorage.getItem('gorod')].selected = true;
                    }
                        </script>
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@inzeppelin
Вы неправильно присваиваете значение селекту.

if (localStorage.getItem('gorod')) {
   document.getElementById("fruit").value = localStorage.getItem('gorod');
}


а еще лучше так

const storedValue = localStorage.getItem('gorod');
if (storedValue) {
   document.getElementById("fruit").value = storedValue;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@DanKud
if (localStorage.getItem('gorod')) {
    document.getElementById("fruit").value = localStorage.getItem('gorod');
}

По поводу перезагрузки страницы в приведенном коде вообще ничего нет.
Ответ написан
Комментировать
@kudis
Bitrix developer
Я не увидел скрипта "перегружалки" страницы,
а присваивать значение нужно вот так:
document.getElementById("fruit").value = localStorage.getItem('gorod');
Ответ написан
Комментировать
@zhen_safronov Автор вопроса
Виноват. Спасибо inzeppelin отрабатывает. Перезагрузку я реализовывал путем в ставки
location.reload();На десктопе норм, на андрюше молчание
document.getElementById("fruit").onchange = function () {
            localStorage.setItem('gorod', document.getElementById("fruit").value);
            location.reload();


И еще такой вопрос
Есть в коде функция проверки поля. Если пусто то задает дефолтное значение - Минск.
if (localStorage.getItem('gorod') == null) {

    localStorage.setItem("gorod","Минск");
}
.

А есть функция которая через Яндекс определяет город и задает эту дефолтную настройку городом пользователя
jQuery(document).ready(function () {
            ymaps.ready(function () {
                var geolocation = ymaps.geolocation;
                    var city = geolocation.city;
                localStorage.setItem('gorod', city);
            });
        });

Только есть проблема. Если брать город с яндекса, то он ее прописывает но в поле не отображает. Она отобразится когда произойдет перезагрузка страницы.
Без функции яндекса, настройка задается и сразу отображается
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы