-2

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

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

举个例子:

我的 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 尚未集中,因此我的检查失败并调用了代码,这将删除下拉菜单并发送更新!

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

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

4

1 回答 1

1

行。我解决了!

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

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

于 2013-04-21T14:47:30.787 回答