Я бы сказал, нет, такого события нет. И я не думаю, что есть идеальный способ справиться с этим
Я постараюсь справиться с этим
- добавление глобальной переменной, значение по умолчанию -1 и значение 1, когда форма получает фокус.
добавление обработчика mousedown
к документу, когда форма получает фокус. Он установит глобальную переменную равной 1.
- При срабатывании он проверит, все ли в форме (используя
event.target
). Если это так, пусть 1, иначе установите его на 0.
Обработчик mousedown
будет иметь event.preventDefault;
и return false;
. Это может вызвать проблемы у ваших других eventHandlers . Чтобы избежать таких неприятностей, я постараюсь зафиксировать события, которые могут быть повреждены на этапе захвата, а не пузырящегося.
- добавление обработчика
mouseup
к документу, когда форма получает фокус. В нем проверьте, имеет ли переменная значение 0. Если да, то выполните задание размытия и удалите два специальных обработчика.
Но это может иметь некоторую слабость (особенно если пользователь покидает окно, пока нажата мышь).
Надеюсь, это понятно, я постараюсь опубликовать скрипку как можно скорее.
РЕДАКТИРОВАТЬ: Вот скрипка . Однако обратите внимание, что я нацеливаю внимание на форму, и она работает только на одном. Я сделал это, потому что похоже, что форма никогда не фокусируется иначе (вероятно, связана со способом обработки событий jsfiddle). Но в теории это должно работать без строки $("form").focus();
.
В качестве дополнительного примечания я использовал jQuery для некоторых сокращений, я попытаюсь удалить вызовы, если это необходимо.