我有一个div,我通过jQuery动态创建,其中包含一些链接/按钮.当这个div失去焦点时,我需要删除它.这部分我可以做好.
但是,现在我在div的包装器上有一个focusout事件,当我点击div中的一个按钮时,包装器会失去焦点给孩子并且我的事件被触发了.检查单击的元素是否是我可以执行的包装的子项,但由于包装器不再具有焦点,因此我的事件不会再次触发以删除div.
我也试过.blur,但这不会更好.
做这个的最好方式是什么?
我在div中有3个文本框,当焦点离开其中一个输入而不转到这3个输入中的另一个时,我需要引发一个事件.
只要用户正在编辑这3个控件中的一个,事件就不会引发.只有当焦点变为不是这些输入之一的控件时,才会引发该事件.
我尝试使用focusout所有3个输入并检查是否document.ActiveElement是3个输入中focusout的一个,但是一个控件focusin在另一个之前发生,因此document.ActiveElement总是为空.
任何人都知道如何解决这个问题?
我有一个焦点事件
$('.alpha').on("focusout", function () {...});
Run Code Online (Sandbox Code Playgroud)
我想从代码中的其他地方触发它。
我试过$('#input12').focus().blur();
,也试过$('#input12').trigger("focusout")
编辑:我正在使用动态生成的元素。
但没有运气...
该元素#input12具有类名,alpha因此我希望触发 focusout 事件。
有没有办法完成它?
这是我尝试执行https://jsfiddle.net/jnmnk68d/时的 jsfiddle 示例
//<![CDATA[
$(window).load(function() {
$('.n_val').focusout(function() {
alert(this.id);
});
});//]]>
Run Code Online (Sandbox Code Playgroud)
动态生成文本框
buffer += "<tr><td>" + nomen_list.getName() + "</td><td><input type='text' style='width:50px' class='n_val' id=" + nomen_list.getId() + "-" + nomen_list.getCat() + " value=" + nomen_list.getVal() + " /></td></tr>";
Run Code Online (Sandbox Code Playgroud)
我focusout动态生成文本框,但不适用于动态生成的文本框,而同一页面有一些文本框,这是硬编码的,上面的脚本被触发.
可以将元素传递给Jquery中的focusout函数吗?我想将所有textboxes focusout事件绑定在一个语句中.所以我的解决方案是让他们成为同一个班级然后做类似的事情
$(".class-name").focusout( function() {
//do whatever
});
Run Code Online (Sandbox Code Playgroud)
但是我想在焦点内部获取元素的值,而不必通过它的id引用它,所以这样的事情可能吗?
$(".class-name").focusout( function(this) {
alert( $(this).val() );
});
Run Code Online (Sandbox Code Playgroud)