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