如果两个输入仅被模糊,则触发某些内容

时间:2015-03-05 05:05:04

标签: javascript jquery events javascript-events

我有一个<form>并排包含两个文本<input>。当这两个输入都失去焦点时,我想做一些事情(向服务器发送Ajax请求并用DOM中的其他内容替换它们)。但是,如果我从其中一个输入点击或标签到另一个输入,我不想做那些事情。

onBlur元素上设置<form>事件处理程序可以正常使用我的设置,但似乎没有任何方法可以确定其他表单输入是否是我的下一个目标。如果我在处理程序中检查document.activeElement,则指向该点的<body>元素(在Chrome中)。之后才会改变为另一个输入。

有没有办法可靠地做我要问的事情?涉及jQuery或其他库的解决方案很好。

3 个答案:

答案 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    
  });
});