У меня есть код, который запускается при событии «размытие» на элементе. Этот код должен фактически использовать activeElement и, следовательно, не может фактически запускаться из события «размытия».Как создать событие «about Blur» или «размыть» в Javascript?
Я надеялся, что смогу создать такое событие. Цель состояла в том, что событие «willblur» будет срабатывать перед событием «размытия».
var lastTouchedElement;
$('body').on('click', preBlurHandler);
$('body').on('focusin', postFocusHandler);
$('.inp1').on('willblur', function() {alert('willblur');});
$('.inp1').on('blur', function() {alert('blur');});
function preBlurHandler(ev) {
if (!lastTouchedElement) {
postFocusHandler(ev);
return;
}
var focussingElement = ev.target;
if (lastTouchedElement === focussingElement || $.contains(lastTouchedElement, focussingElement)) {
//focus is staying in the same place, do nothing
return;
}
$(lastTouchedElement).trigger('willblur', [ev, {
target: lastTouchedElement,
focussingElement: focussingElement
}]);
}
function postFocusHandler(ev) {
lastTouchedElement = document.activeElement;
}
Полный код находится в JSFiddle на https://jsfiddle.net/t0un95jt/3/
Но это не работает. На самом деле это даже не близко.
Помогите мне StackOverflow; ты моя единственная надежда.
Focusin, [focusout] (https://developer.mozilla.org/en-US/docs/Web/Events/focusout) – Jonathan