Фокус триггера jquery не работает в Chrome - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть форма на моем веб-сайте, и я заполняю все поля переменных запроса get. В 2 из поля ввода я запускаю приложение Google Maps для расчета расстояния.

Когда я читаю значения из запроса, я хочу вызвать событие фокуса, чтобы автоматически вызывать приложение gmaps и вычислять расстояние. Функция триггера SOMETIMES не работает в Chrome и Safari, хотя она всегда работает в Firefox, explorer и edge. Я пытаюсь установить время ожидания, но проблема продолжает существовать.

Мой код

setTimeout(function() {
    $('#option_31').trigger("focus");
    $('#option_31').on("focus", function(){
        //do staff
    });
    $('#option_32').trigger("focus");
    $('#option_32').on("focus", function(){
        //do staff
    });
}, 2000);

1 Ответ

0 голосов
/ 05 сентября 2018

Вы пытаетесь запустить тайм-аут до установки обработчиков событий. Некоторые браузеры на некоторых платформах могут быть настолько медленными в запуске или настолько быстрыми в установке обработчика событий, что ваш код работает там

Лучше вообще не устанавливать обработчики событий внутри тайм-аута:

$('#option_31').on("focus", function(){
    //do stuff
});     
$('#option_32').on("focus", function(){
    //do stuff
});

setTimeout(function() {
  $('#option_31').trigger("focus");
  $('#option_32').trigger("focus");
}, 2000);
...