Изменить фокус между веб-входами

В веб-контексте JavaScript/jQuery, имеющем:

  • Два поля ввода текста формы, A и B, которые включены
  • Поля ввода должны быть отключены, если ни одно из них не имеет фокуса

Т.е. с помощью функции фокуса jQuery, чтобы проверить, когда и A, и B теряют фокус, работает нормально, но когда A теряет фокус на B (вкладка или выбрав B), я не могу проверить, получил ли B фокус, поскольку фокусировка A перед изменение фокуса завершено.

Как я могу проверить фокусировкой или равным, что и A и B потеряли фокус при переключении между полями ввода?

Пример:

Отключает поля ввода, когда оба теряют фокус, но, к сожалению, также при переключении между ними - что не является намерением.

$('input').focusout(function() {
    if ($(':focus').length === 0) { // does not count the other input yet
        $("input").prop('disabled', true);
    }
});

https://jsfiddle.net/hbypowv4/

2 ответа

Решение

Ты можешь использовать MouseEvent.relatedTarget проверить, не теряет ли фокус на B

Свойство MouseEvent.relatedTarget только для чтения является вторичной целью события, если оно есть.

https://jsfiddle.net/hbypowv4/2/

Вы можете сделать это с помощью window.setTimeout() следующим образом:

$(document).ready(function() {
  $('input').focusout(function() {
    window.setTimeout(function() {
        if ($(':focus').length === 0) {
            $("input").prop('disabled', true);
        }
    }, 5);
  });    
});
Другие вопросы по тегам