我目前正在开发一些带有表格的管理工具。当我单击某个字段时,它将使其可编辑。但我有几个字段,我有多个选择框或文本字段。问题是当一个选择框或文本字段模糊时调用处理程序。
我尝试检查是否有任何所需的对象具有焦点,但似乎在新元素具有焦点之前触发了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还没有集中注意力,因此我的检查失败并调用代码,这会删除下拉菜单并发送更新!
那我怎么能做这个呢?基本上,如果我将焦点放在另一个有效元素上,如何防止模糊事件被触发?
(我希望现在更清楚......)
答案 0 :(得分:1)
确定。我解决了!
$(document).on("blur", "select.edit, select.edit2", function()
{
$(document).one("click", finishEdit);
});
在设置焦点后调用finishEdit函数。