如何检查表单是否失焦
How to Check if form is out of focus
我正在尝试检查表单是否失焦,以便我可以相应地操作 DOM。
我试过这样的事情:
$("#dialog-form").on("focusout", function () {
if ($(document.activeElement).parents('#dialog-form').length === 0) {
//Do some stuff...
};
});
由于focusout
绑定到所有子元素,因此即使我在窗体中的元素之间移动焦点,也会触发此事件。问题是,长度总是返回 0 所以...显然这是错误的。
是否有关于该主题的最佳实践?
编辑: (cshtml)
@model IEnumerable<TasksWebApp.Task>
<h2>Tasks Managment Tool</h2>
<hr />
<br />
<ul id="MainUL">
@{foreach (var item in Model)
{
<li id="li_@item.Name">
<div class="taskContainer">
@if (item.SubTasks.Count > 0)
{
<div class="expand">
<button>Expand</button>
</div>
}
<div class="erase">
<button>Erase Task</button>
</div>
<div class="addSubClass">
<button>Add Sub-Class</button>
</div>
<div class="taskDetails">
Name: <span>@item.Name</span>
Owner: <span>@item.Owner</span>
</div>
</div>
<ul></ul>
</li>
}
}
</ul>
<div id="AddMainItem">
<button>Add Main Item</button>
</div>
<div id="dialog-form" title="Create New Task">
<p class="formHeadPar">All form fields are required:</p>
<p id="FormComments"></p>
<form id="AddTaskForm">
<label for="newTaskName">Name:</label>
<input type="text" name="newTaskName" id="newTaskName" placeholder="Task Name" />
<label for="newTaskOwner">Owner:</label>
<input type="text" name="newTaskOwner" id="newTaskOwner" placeholder="Task Owner" />
<input type="submit" tabindex="1" value="Add Task" />
<button id="CloseForm">Close Form</button>
</form>
</div>
您可以将所选对象与 document.activeElement
进行比较,后者包含具有焦点的当前元素。但请注意,它只能包含能够击键的元素,例如输入元素等。
focusout
事件冒泡,并在窗体中的元素失去焦点时触发,但在新元素收到焦点之前,因此您必须延迟回调超时,以便activeElement
属性有时间更新
$("#dialog-form *").on("focusout", function () {
setTimeout(function() {
if ( $(document.activeElement).closest('#dialog-form').length === 0 ) {
//Do some stuff...
};
}.bind(this));
});
小提琴
相关文章:
- 博主iframe评论表单是否被限制自定义
- 在不重新运行jquery验证的情况下检查表单是否有效
- 使用Ajax提交表单是否安全
- 尝试检索变量以检查表单是否有效
- 如何检查表单是否失焦
- 检查 Emberjs 中的表单是否为空的正确方法
- 使用 jQuery UI 选项卡拆分表单是否会影响表单发布到 PHP
- 使用 jQuery 检查表单是否具有输入元素
- 了解 html 表单是否已更改
- 角度架构表单 - 检查表单是否经过验证
- 使用角度确定表单是否有效
- 检查表单是否已保存在CRM 2011 Javascript中
- 使用jQuery,如何查找表单是否已更改
- 检查输入表单是否为空jQuery
- 正在检测表单是否已更改,脚本是否不起作用
- 无法验证表单是否已用CasperJS&jQuery
- 如何检查表单是否在没有提交按钮的情况下提交
- Angular.js Search查询搜索表单是否不在当前文件中
- 使用GET方法选择表单——是否有可能有一个不向URL添加任何内容的选项?
- HTML表单是否需要Action/Method才能提交?