1

在 JavaScript/jQuery Web 上下文中,具有:

  • 已启用的两个表单文本输入字段 A 和 B
  • 如果输入字段都没有焦点,则应禁用输入字段

即通过jQuery的focusout函数来检查A和B何时失去焦点工作正常,但是当A失去焦点到B(选项卡或通过选择B)时,我无法检查B是否获得焦点,因为A之前的焦点焦点改变完成。

在输入字段之间切换时,如何通过 focusout 或等于检查 A 和 B 都失去焦点?

例子:

当两者都失去焦点时禁用输入字段,但不幸的是在它们之间切换时也禁用 - 这不是意图。

$('input').focusout(function() {
    if ($(':focus').length === 0) { // does not count the other input yet
        $("input").prop('disabled', true);
    }
});

https://jsfiddle.net/hbypowv4/

4

2 回答 2

2

您可以使用MouseEvent.relatedTarget来检查 A 是否失去焦点到 B

MouseEvent.relatedTarget 只读属性是事件的次要目标,如果有的话

https://jsfiddle.net/hbypowv4/2/

于 2015-05-28T10:53:18.757 回答
0

你可以像这样使用 window.setTimeout() 来做到这一点:

$(document).ready(function() {
  $('input').focusout(function() {
    window.setTimeout(function() {
        if ($(':focus').length === 0) {
            $("input").prop('disabled', true);
        }
    }, 5);
  });    
});
于 2015-05-28T10:27:37.487 回答