Внимание силы на один элемент за исключением. (jQuery)

У меня есть два поля ввода. Я хочу вызвать внимание на #area, неважно, где пользователь нажимает, если это не находится на #input. Я попробовал что-то вроде этого, но так как вход является частью документа, это не работает.

$("#area").focus();
$(document).click(function() { $("#area").focus() };
$("#input").click(function() { $("#input").focus() };

Мысли?

7
задан tubaguy50035 5 July 2012 в 21:43
поделиться

3 ответа

change it to

$("#area").focus();
$(document).click(function() { $("#area").focus() });
$("#input").click(function(e) { e.stopPropagation(); $("#input").focus() });

Это остановит событие от распространения на документ, и оно будет поймано только #input

12
ответ дан 6 December 2019 в 14:00
поделиться

Решение stopPropogation проще, чем то, что я собираюсь предложить, но, вероятно, стоит обсудить этот другой вариант. В первой функции, которую вы получили, вы можете попробовать взять первый аргумент функции, который является нормализованным объектом события jQuery:

$(document).click(function(event) { ...

и проверить, является ли свойство target события вашим входом:

$(document).click(function(event) {
    if(! (event.target == $("#input").get(0)) )
        $("#area").focus();
}
2
ответ дан 6 December 2019 в 14:00
поделиться

Вам необходимо отменить всплытие событий при нажатии на обычные входы, либо вернув false в обработчике событий, либо вызвав e.stopPropagation () .

Я не уверен, имеет ли значение порядок, в котором вы назначаете обработчики событий, но вы можете попробовать поместить событие #input первым.

1
ответ дан 6 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: