Почему не срабатывает метод focus() для input в баузере safari?

Всем привет!

Столкнулся с проблемой: необходимо было реализовать, чтобы - при клике по определенной кнопке в мобильном разрешении экрана - происходил скролл до формы поиска и - после завершения скролла - фокусировка на нужный input. Вот ссылка на саму страницу - клик

Обращаю внимание, что кнопка, по которой нужно кликнуть, появляется при скролле страницы вниз

skrinshoter.ru/s/120620/RAeoHQCT?a
skrinshoter.ru/s/120620/9jq9RWiO?a

Казалось бы, тривиальная задача - пара строк jquery и - готово! Оказалось, что на всёх браузерах этот код прекрасно отрабатывает, кроме safari (в данном случае тестили на айфонах).

Вот разметка
<!--кнопка для срабатывания скрипта-->
<div class="search_fix"></div>

...

<!--форма с полем input-->
<form action="rezultatyi-poiska.html" method="get" class="header__search msearch2">
    <input id="change_search_input" type="text" class="header__input ui-autocomplete-input" name="query" value="" placeholder="Что ищем?" autocomplete="off">
    <div class="input-group-append">
        <button type="submit" class="header__btn"></button>
    </div>
    <div id="change_search"></div>
    <div id="change_search_close"></div>
</form>


Вот jquery - упрощенный, выкинул не относящиеся к проблеме строки
var windowWidth = window.innerWidth;
    if (windowWidth > 991) {
        $('.header .search_fix').on ('click', function(){         
            $('#change_search_input').focus();                      
            return false;
        });
    } else {
        $('.search_fix').on('click', function(event){
            console.log(event.type);
            $("html, body").animate({ scrollTop: 0}, 1000, function() {               
                    $('#change_search_input').focus();          
            });            
        });
    }


Я не смог нагуглить решение проблемы, возможно, не хватает знаний.

Вдруг кто сталкивался - направьте пожалуйста, буду очень признателен.
  • Вопрос задан
  • 2232 просмотра
Пригласить эксперта
Ответы на вопрос 1
artemiy_karkusha
@artemiy_karkusha
Гость в этой жизни.
Это событие onmouseup, которое делает выбор невыбранным, поэтому вам просто нужно добавить:
$('#change_search_input').mouseup(function(e){
  e.preventDefault();
});
Ответ написан
Ваш ответ на вопрос

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

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