检查是否有任何输入聚焦或活动而不是表格

时间:2016-02-18 16:52:05

标签: javascript jquery html

在这种情况下我无法使用表单,但我有一组输入元素。我有一个表行,每个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。

2 个答案:

答案 0 :(得分:2)

您将使用$('。table-row input:focus')。length检查它。如果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>

答案 1 :(得分:0)

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