Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中强制丢失表单中所有字段的焦点_Javascript_Jquery_Lost Focus - Fatal编程技术网

Javascript 如何在jQuery中强制丢失表单中所有字段的焦点

Javascript 如何在jQuery中强制丢失表单中所有字段的焦点,javascript,jquery,lost-focus,Javascript,Jquery,Lost Focus,当一个输入字段改变(onchange)时,我触发一个函数来设置一个变量。唯一的问题是,在设置变量之前,字段首先必须失去焦点,我可以检查字段是否更改,这是用户单击选项卡时我要做的,这样我可以检查用户是否忘记在上一个选项卡中提交表单。如何强制所有可能的字段失去焦点,因此首先可以发生onchange事件?您可以触发.blur()事件 $('SomeElement').blur(function () { // do whatever }); $('SomeElement').blur();

当一个输入字段改变(onchange)时,我触发一个函数来设置一个变量。唯一的问题是,在设置变量之前,字段首先必须失去焦点,我可以检查字段是否更改,这是用户单击选项卡时我要做的,这样我可以检查用户是否忘记在上一个选项卡中提交表单。如何强制所有可能的字段失去焦点,因此首先可以发生
onchange
事件?

您可以触发
.blur()
事件

$('SomeElement').blur(function () {
   // do whatever
});

$('SomeElement').blur();
您可以使用以下选项:

$(':focus').blur()
如果您的站点中没有jQuery,您可以用以下方式替换它:

let el = document.querySelector( ':focus' );
if( el ) el.blur();

您不需要jQuery来实现这一点;vanillaJS也能做到这一点

document.activeElement.blur()

注意:通常,我会在调用方法之前检查null值,但是只有在没有
èbody›
节点的情况下才会返回null值,所以这个直接调用是非常安全的

$(':focus').blur();

您可以使用这行代码,而所有内容都会失去焦点(jQuery)

$(“*:focus”).blur()因为texteraes和contentEditable元素也可以聚焦…
document.body.focus()
nice and easy,喜欢它有人能提供一个非jquery的答案吗?@posfan12用一个非jquery版本编辑。或者作为一个安全的一行:
document.queryselectoral(':focus').forEach(el=>el.blur())
querySelectorAll
?是否可能有多个元素具有焦点?