我正在触发一些文本框的onblur()代码。但是如果用户点击取消按钮导致该onblur(),我想做一些不同的事情。在onblur()事件处理函数中是否有一种方法可以知道控件是什么,即将获得焦点并作出相应的反应?
-Joseph
答案 0 :(得分:6)
是的,你可以像这样得到目标:
var target = event.explicitOriginalTarget || document.activeElement;
(我想我在StackOverflow上找到了这个)。
答案 1 :(得分:1)
我认为没有内置的方法,但你可以通过将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);
});