jQuery:如何知道表行何时失去焦点?

时间:2013-06-02 18:23:22

标签: jquery focus

在表格行(<tr>)中有几个输入元素。

当tr失去焦点时,我需要执行一些JavaScript代码(但是当用户只是切换到同一个tr中的不同输入元素时,我不需要)。

我使用jQuery。

如何跨浏览器进行操作?

1 个答案:

答案 0 :(得分:14)

我想你正在寻找这种方法(demo,在Chr / Ff / IE10中检查):

var delayedFn, blurredFrom;
$('tr').on('blur', 'input', function(event) {
    blurredFrom = event.delegateTarget;
    delayedFn = setTimeout(function() {
        console.log('Blurred');
    }, 0);
});
$('tr').on('focus', 'input', function(event) {
    if (blurredFrom === event.delegateTarget) {
        clearTimeout(delayedFn);
    }
});

如您所见,我们将调用延迟调用我们的“真实模糊处理程序”(在此示例中为console.log的函数)并setTimeout - 并且如果我们看到焦点保持在同一行。

我在这里使用代表团,因此我不需要每次都致电closest(tr)。但是这里有另一个副作用,因为处理程序将正确处理添加到表中的输入。