检查是否有任何输入聚焦或处于活动状态,而不是在表单中

Check if any inputs are focused or active not in a form

本文关键字:表单 活动状态 任何 是否 输入 聚焦 检查      更新时间:2023-09-26

在这种情况下我不能使用表单,但我有一组输入元素。我有一个表格行,每个 td 都是一个输入。一旦一个人失去焦点,我想检查是否有其他人处于活动状态,如果没有,我想运行一些代码。

.js

$(document).on("blur", ".table-row", function(e) {
    var $tr = $(e.currentTarget),
        $inputs = $tr.find("inputs);
    $inputs.each(function(input) {
    $tr[input].is(":focus");
    });
});

这个想法是我正在创建一个编辑表单。我想让一旦表单完成编辑,我将呈现一些不同的 html。

您将

使用 $('.table-row input:focus').length 进行检查。如果长度为 0,则没有集中输入。

但是,如果您在触发事件后立即检查它,您将永远无法正确处理它,因为事件在输入模糊之后触发,但在另一个输入获得焦点之前触发。

因此,您可以在即时超时中包装评估。它将在 0 秒后触发,但在执行其他同步代码后触发。

$(document).on("blur", "input", function(e) {
    setTimeout(function(){
        if ($('input:focus').length) {
          	console.log(true);
        } else {
          	console.log(false);
        }
    }, 0);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tr>
    <td><input type="text"></td>
  </tr>
  <tr>
    <td><input type="text"></td>
  </tr>
  <tr>
    <td><input type="text"></td>
  </tr>
  <tr>
    <td><input type="text"></td>
  </tr>
  <tr>
    <td><input type="text"></td>
  </tr>
</table>

您可以将 tabIndex 设置为 DOM 的所有元素,并且在焦点更改时,您可以检查它是否是最后一个 tabINdex 值,如果是这样,那么渲染您想要的另一个 HTML