Задать вопрос
Ответы пользователя по тегу JavaScript
  • Неужели до сих пор нет возможности вернуть событие focus (при его потери) в FireFox?

    JawsIk
    @JawsIk Автор вопроса
    Python Django, Lua, ЧПУ-станки(ArtCam, Aspire)
    Короче порешал. Нашёл засаду в коде, а теперь по порядку.

    1. Обманка через setTimeout действительно работает. Т.е. код:
    setTimeout(function() {
      $('.element').focus();
      $('.element').select();
      }, 0);
    действительно рабочая обманка

    2. Но!
    в моём случае полный код был такой:
    $order.on('focusout', '.order-item-h', function () {
        ...
        setTimeout(function() {
          $(this).focus();
          $(this).select();
        }, 0);
        ...
    });
    и здесь я попадаю на долбаное "замыкание".
    Т.е. объект $(this) во внутренней функции setTimeout становиться undefined и код соответственно не отрабатывает.

    3. Чтобы исправить ситуацию, кладу $(this) в переменную и тогда всё срабатывает одинаково хорошо во всех браузерах (и в FireFox в том числе):
    $order.on('focusout', '.order-item-h', function () {
        ...
        $thi = $(this);
        setTimeout(function() {
          $($thi).focus();
          $($thi).select();
        }, 0);
        ...
    });

    Ура!
    Ответ написан
    Комментировать