Как проверить, фокусируется ли внимание на диалоге выбора файлов в JavaScript ⇐ Jquery
-
Гость
Как проверить, фокусируется ли внимание на диалоге выбора файлов в JavaScript
У меня есть таблица, и каждая строка имеет один или несколько пользовательских входных данных с прикрепленным прослушивателем событий focusout, который вызывает функцию:
function inputFocusOut(event, el) { пусть строка = el.closest('tr'); пусть curFocus = event.latedTarget; пусть moveOn = true; if(фокус был на динамически добавленной строке) { // У меня есть другой способ справиться с этим двигатьсяВкл = ложь; } Еще если (curFocus) { // Проверяем, находятся ли в той же строке если (в той же строке) { двигатьсяВкл = ложь; } } else if(el.nodeName === 'INPUT' && el.type === 'file') { // Если фокус на средстве выбора файлов, moveOn = false; } если (двигаться) { // Проверяем, изменились ли значения, и делаем больше, если что-то изменилось } } Функция отлично работает для всего, кроме input[type='file']. Когда вы нажимаете кнопку, чтобы загрузить файл, фокус оказывается на диалоговом окне выбора файла, поэтому ввод теряет фокус, вызывая срабатывание функции.
Можно ли узнать, когда фокус находится на окне браузера файлов, и в этом случае я не хочу продолжать выполнение остальной логики? event.relatedTarget не определен, когда средство выбора файлов открыто, поэтому я не уверен, что именно проверять.
Я нашел этот вопрос, но в ответе говорится о фокусировке на вводе и его размытии, что я уже делаю (хотя и с focuout вместо blur) . Мне не удалось найти ничего полезного, что может означать, что я использую не лучшие условия поиска.
Любая помощь по JavaScript или jQuery будет оценена по достоинству.
У меня есть таблица, и каждая строка имеет один или несколько пользовательских входных данных с прикрепленным прослушивателем событий focusout, который вызывает функцию:
function inputFocusOut(event, el) { пусть строка = el.closest('tr'); пусть curFocus = event.latedTarget; пусть moveOn = true; if(фокус был на динамически добавленной строке) { // У меня есть другой способ справиться с этим двигатьсяВкл = ложь; } Еще если (curFocus) { // Проверяем, находятся ли в той же строке если (в той же строке) { двигатьсяВкл = ложь; } } else if(el.nodeName === 'INPUT' && el.type === 'file') { // Если фокус на средстве выбора файлов, moveOn = false; } если (двигаться) { // Проверяем, изменились ли значения, и делаем больше, если что-то изменилось } } Функция отлично работает для всего, кроме input[type='file']. Когда вы нажимаете кнопку, чтобы загрузить файл, фокус оказывается на диалоговом окне выбора файла, поэтому ввод теряет фокус, вызывая срабатывание функции.
Можно ли узнать, когда фокус находится на окне браузера файлов, и в этом случае я не хочу продолжать выполнение остальной логики? event.relatedTarget не определен, когда средство выбора файлов открыто, поэтому я не уверен, что именно проверять.
Я нашел этот вопрос, но в ответе говорится о фокусировке на вводе и его размытии, что я уже делаю (хотя и с focuout вместо blur) . Мне не удалось найти ничего полезного, что может означать, что я использую не лучшие условия поиска.
Любая помощь по JavaScript или jQuery будет оценена по достоинству.
Мобильная версия