Изменить фокус между веб-входами
В веб-контексте 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);
}
});
2 ответа
Ты можешь использовать MouseEvent.relatedTarget
проверить, не теряет ли фокус на B
Свойство MouseEvent.relatedTarget только для чтения является вторичной целью события, если оно есть.
Вы можете сделать это с помощью window.setTimeout() следующим образом:
$(document).ready(function() {
$('input').focusout(function() {
window.setTimeout(function() {
if ($(':focus').length === 0) {
$("input").prop('disabled', true);
}
}, 5);
});
});