我有一个<form>
并排包含两个文本<input>
。当这两个输入都失去焦点时,我想做一些事情(向服务器发送Ajax请求并用DOM中的其他内容替换它们)。但是,如果我从其中一个输入点击或标签到另一个输入,我不想做那些事情。
在onBlur
元素上设置<form>
事件处理程序可以正常使用我的设置,但似乎没有任何方法可以确定其他表单输入是否是我的下一个目标。如果我在处理程序中检查document.activeElement
,则指向该点的<body>
元素(在Chrome中)。之后才会改变为另一个输入。
有没有办法可靠地做我要问的事情?涉及jQuery或其他库的解决方案很好。
答案 0 :(得分:1)
事实证明event.relatedTarget
正是我所寻找的 - 这将返回DOM节点,将焦点放在模糊事件上,因此只需设置一个条件来查看它是否存在匹配其他字段。
但是,虽然这在Chrome中运行良好,但relatedTarget
目前尚未在其他浏览器中正常实施。显然有几个解决方法:
在IE11中,document.activeElement
实际上在事件触发时设置为接收元素,因此您可以使用它。
在Firefox中,显然可以使用event.explicitOriginalTarget
代替。
答案 1 :(得分:0)
试试..
设置一个全局变量,用于存储您上次模糊的内容。叫它x。
在所有元素上设置模糊事件,并将x设置为您模糊的最后一个元素。
在所有元素上设置焦点事件,如果x不是您的两个元素之一,则运行您的脚本。
答案 2 :(得分:0)
给他们两个id,像这样:
<input id="id1" />
<input id="id2" />
然后,使用jQuery,您可以调用与两个ID嵌套的blur()。
$('#id1').blur(function(){
$('#id2').blur(function(){
//do your thing
});
});