我正在文本框的onblur()事件中执行一些代码。但是如果用户点击取消按钮导致onblur()事件触发,我想要做一些不同的事情。在onblur()事件处理程序函数内部,有没有一种方法可以知道即将获得焦点的控件,并相应地做出反应?
- Joseph
- Joseph
是的,您可以像这样获得目标:
var target = event.explicitOriginalTarget || document.activeElement;
(我想我在StackOverflow上找到了这个答案。)
我认为没有内置的方法,但是你可以通过将focus
事件附加到所有表单元素并设置一些全局可访问的变量来拼凑出一些东西,以记录谁获得了焦点。
类似这样(您可能需要微调时间值):
var focusedElem = null;
var focusedTime = 0;
$("input", "#myForm").focus(function() {
focusedElem = this;
focusedTime = new Date();
})
.blur(function() {
setTimeout(function() { //set a small timeout to wait for the other control to receive focus and set itself as focusedElem
if (focusedElem && (new Date() - focusedTime) < 15) {
//do Something with focusedElem;
}
}, 10);
});
onfocusout: function(element) { var target = document.activeElement; if (target != null && target.id.match(/Cancel$/)) { return true; }
- BrokeMyLegBiking