两个选择框的.blur()

时间:2013-04-19 16:17:12

标签: jquery drop-down-menu blur

我目前正在开发一些带有表格的管理工具。当我单击某个字段时,它将使其可编辑。但我有几个字段,我有多个选择框或文本字段。问题是当一个选择框或文本字段模糊时调用处理程序。

我尝试检查是否有任何所需的对象具有焦点,但似乎在新元素具有焦点之前触发了blur事件。

举个例子:

我的HTML代码如下所示:

<form>
<select id="edit">
<!-- Options... -->
</select>
<select id="edit2">
<!-- Options... -->
</select>
</form>

这是我的一些js:

$(document).on("blur", "select.edit", finishEdit);
$(document).on("blur", "select.edit2", finishEdit);

// Some later point in the code

function finishEdit()
{
  if(!($("select.edit:focus").length || $("select.edit2:focus").length))
  {
    // This should NOT be called if I just focus edit2! But it does!!
  }
}

所以我开始选择编辑。我可以轻松编辑它。但如果我现在尝试选择edit2,我将调用编辑中的模糊事件。好。这不应该是一笔大交易,因为我正在检查其他下拉是否被选中。但是在这一点上,edit2还没有集中注意力,因此我的检查失败并调用代码,这会删除下拉菜单并发送更新!

那我怎么能做这个呢?基本上,如果我将焦点放在另一个有效元素上,如何防止模糊事件被触发?

(我希望现在更清楚......)

1 个答案:

答案 0 :(得分:1)

确定。我解决了!

$(document).on("blur", "select.edit, select.edit2", function()
{
  $(document).one("click", finishEdit);
});

在设置焦点后调用finishEdit函数。