2013-02-09 4 views
2

Фокусировка/размытие событий только после того, как элемент теряет фокус ... Кстати, я предпочитаю делать это без использования плагинов. Спасибо!Есть ли способ предотвратить элемент потерять фокус в JavaScript/jQuery?

+0

В случае размытия установите фокус на элемент снова. –

+0

jQuery *** - это плагин ... –

+2

Это похоже на враждебную вещь. Что вы пытаетесь достичь или предотвратить? – Carl

ответ

4

Да. Вы можете использовать это:

<input type="text" onblur="this.focus();" /> 

Или в JQuery:

$(element).blur(function(){ 
    $(this).focus(); 
}); 
1

Да.

При нажатии на фокусируемого DOM элемента (фокусируемого по умолчанию, или из фокусирования путем добавления к нему атрибут tabIndex), то он будет первым получит "focus" событие, чтобы вы знали, что он собирается получить фокус.

До этого, однако, независимо от того, что в фокусе получилось событие "focusout" типа FocusEvent. Предположим, что ваша переменная события равна e. Свойство e.relatedTarget будет заполнено элементом, который вот-вот получит фокус. Если вы обработаете событие "focusout", установив фокус на то, что теряет фокус e.target, он сразу же получит фокус, а также событиеи "focusin", в то время как объект, который будет получать фокус, не будет получать фокус или какие-либо фокусные события.

Обработка "focusout" событие, следовательно, является лучшим способом предотвратить объект от потери фокус. Технически, поскольку событие не cancelable, вы не можете помешать ему потерять фокус, но вы можете заставить его немедленно повторно получить фокус, тем самым предотвращая передачу фокуса другому элементу.

Между тем, если ваша цель состоит, чтобы предотвратить объект от получения в центре внимания, то вы лучше всего обработать его "focus" событие, вызвав blur на элемент, поэтому он никогда не получает фокус и не получает "focusin" мероприятие.

Смежные вопросы