Jquery 在Chrome中聚焦模糊元素

Jquery 在Chrome中聚焦模糊元素,jquery,google-chrome,Jquery,Google Chrome,如果这是重复的话,我很抱歉,但是我找不到我问题的答案。请给我一个链接,如果你知道在哪里已经得到答复 我使用jquery将函数绑定到文本框的onblur事件。 目标是仅当焦点离开tblUserDetails表中的文本框时触发回发。 当文本框失去焦点时: 在IE中,新的焦点元素是新选定的文本框 在Chrome中,文档集中在两个文本框之间,因此$(document.activeElement)从不指向新选择的文本框 这是我的代码,在IE中有效,但在Chrome中无效: SaveNetworkDet

如果这是重复的话,我很抱歉,但是我找不到我问题的答案。请给我一个链接,如果你知道在哪里已经得到答复

我使用jquery将函数绑定到文本框的onblur事件。 目标是仅当焦点离开
tblUserDetails
表中的文本框时触发回发。 当文本框失去焦点时:

  • 在IE中,新的焦点元素是新选定的文本框
  • 在Chrome中,文档集中在两个文本框之间,因此
    $(document.activeElement)
    从不指向新选择的文本框
这是我的代码,在IE中有效,但在Chrome中无效:

SaveNetworkDetails: function () {

    // Trigger the blur event when one of the textboxes loses focus
    $("[id$=tblUserDetails]").find('input[id*="txt"]').blur(function (e) {

        // Check if the new focused element is among the textboxes
        if ($(document.activeElement).parents("[id$=tblUserDetails]").length == 0) {
            // Trigger postback
        }
    });
}
如何在绑定到模糊事件的函数中找到Chrome中新选择的文本框

问候,


Gilles

这里有一个小小的误解:它不会触发模糊事件,而是将一个函数绑定到模糊事件,这意味着您设置了一个在模糊发生时将被触发的函数

也许这种误解是你的问题的根本原因

更新

我已经重读了这个问题,现在我看到了你想要实现的目标。虽然你的文本让人觉得你是在编程中触发模糊,但你的问题是,在chrome中,当控件离开时,文档会获得临时焦点


不应在第一个输入的模糊上触发回发,而应在下一个输入的焦点上触发回发。从我在您的代码中看到的情况来看,这一更改无关紧要,但可以解决您的问题。

你好,阿德里安。很抱歉没有使用正确的术语。事件被触发,并调用绑定到该事件的函数。我的问题更多的是,在IE中,焦点的改变似乎是在一个步骤中完成的(从失去焦点的元素到获得焦点的元素),在Chrome中是在两个步骤中完成的(从失去焦点的元素到文档,然后从文档到获得焦点的元素)。在绑定到模糊事件的函数中,我可以访问第一步中获得焦点的元素(即Chrome中的文档),但不能访问最后的元素。吉列萨德里安。这听起来是个好主意。我想我忘了我在做什么。让我试着按照你的建议去做,我会把这个作为答案。我认为Chrome做的是正确的。说明在为新元素指定焦点时,首先对旧元素运行“取消焦点步骤”。它们是单独的操作,模糊事件在新元素激活之前发生。我不认为你打算在模糊处理器中访问新目标。嗨,巴尔马,谢谢你的有趣链接。我不同意你的看法。相同的文档说明“当聚焦的元素不再是可聚焦的元素,或者在没有另一个元素被明确聚焦的情况下停止聚焦,用户代理应该同步运行body元素的聚焦步骤(如果有)。在我的例子中,另一个文本框是显式聚焦的,因此浏览器不必在两者之间聚焦于文档。或者至少它应该允许我访问新的聚焦文本框,作为启动模糊事件的文本框。我看不出该段落如何改变聚焦步骤的第3步(使新元素成为聚焦元素)直到步骤2(对旧元素运行取消聚焦步骤)之后才发生的事实。“同步”并不意味着“同时”。在最好的情况下,当您将焦点移动到新元素时,当unfocus事件正在运行时,不清楚什么应该是活动元素。我同意。在我看来,该段暗示,如果明确关注另一个元素,则不应关注身体。但第2步和第3步似乎与我的陈述相矛盾。因此,我相信规范没有强迫任何行为。不过谢谢你的帮助,至少它告诉我我还有多少东西要学。因为HTML5仍然是一项正在进行的工作,也许你可以向他们发送反馈,这将得到澄清。但目前这对您没有帮助,根据经验,浏览器在这种行为上存在差异,您必须解决这个问题(可能还会向jQuery提交一个增强请求,他们可能会做一些事情)。