Событие, которое вы ищете, это не blur
, а focusout
. Если мы свяжем событие focusout
с самой формой, обработчик будет вызываться всякий раз, когда фокус теряется на каком-либо элементе внутри формы.
Также обратите внимание, что атрибуты tabindex
, которые я добавил к различным элементам, не имеют никакого отношения к работе этого кода. Они были добавлены из-за ошибочного комментария к вашему сообщению о том, что формы не могут быть сфокусированы.
Отсюда tabindex
Глобальный атрибут tabindex указывает, можно ли сфокусировать его элемент, и если / где он участвует в последовательной навигации по клавиатуре (обычно с клавишей Tab, отсюда и название). Он принимает целое число в качестве значения, с различными результатами в зависимости от значения целого числа:
- Отрицательное значение (обычно tabindex = "- 1") означает, что элемент должен быть фокусируемым, но не должен быть доступным с помощью последовательной навигации по клавиатуре. В основном полезно для создания доступных виджетов с помощью JavaScript.
Как видите, любой элемент может получить фокус. Просто некоторые элементы будут получать фокус по умолчанию (якоря, входы, кнопки и т. Д.), Не устанавливая для них tabindex
. В приведенном ниже примере, если вы нажмете на текст «Введите свое имя», вы увидите, что сама форма получает фокус. Затем вы можете перейти к входам, затем div и, наконец, span. Все они получают фокус по очереди.
$('#theForm').on('focusout', function(e) {
// do what you want/need to do here
console.log('Form has lost focus');
});
#theDiv {
height: 50px;
width: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="theForm" tabindex="1">
Enter your name: <input type="text" tabindex="2">
Enter your age: <input type="text" tabindex="3">
</form>
<div id="theDiv" tabindex="4"></div>
<span tabindex="5">Some Text</span>
<p>Write something in the input field, and then click outside the field to lose focus (blur).</p>