gpt4 book ai didi

javascript - 如何在 Javascript 中创建 "about To Blur"或 "will blur"事件?

转载 作者:行者123 更新时间:2023-12-03 08:00:21 29 4
gpt4 key购买 nike

我有一些在元素上的“模糊”事件上运行的代码。此代码需要实际使用 activeElement,因此无法实际从“blur”事件运行。

我希望我能创建一个这样的事件。目的是“willblur”事件在“blur”事件之前触发。

  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;你是我唯一的希望。

最佳答案

关键是使用addEventListener而不是JQuery的on(),并使用“mousedown”而不是“click”。

而不是这一行:

$('body').on('click', preBlurHandler);

我用这个:

window.addEventListener('mousedown', preBlurHandler, true);

addEventListener 的最后一个参数:true,表示“在捕获阶段执行此操作”。捕获阶段从最外层元素开始,并通过在后续子元素上触发事件来工作,然后冒泡阶段开始,并返回 DOM 树。

关于javascript - 如何在 Javascript 中创建 "about To Blur"或 "will blur"事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34606356/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com