从“onblur”事件中排除表单按钮,JavaScript

Exclude form button from 'onblur' event, JavaScript

本文关键字:表单 按钮 JavaScript 排除 onblur 事件      更新时间:2023-09-26

我有一个表单,对大多数输入字段使用onblur,如下所示:

<form>
<input name="..." id="..." onblur="myFunction(name)" />
<button id="..." onclick="submit()">Submit</button>
</form>

表单通过onblur事件实时验证某些字段(即用户名、电子邮件),但当用户单击提交按钮时也会进行相同的检查。

目前,当用户单击提交按钮时,首先触发onblur事件,然后触发按钮中的onclick事件 - 因此运行两次检查并浪费几秒钟。

有没有办法覆盖onblur方法来排除用户按下提交按钮时发生的模糊?

我在myFunction()中考虑一个简单的if(/*button is clicked*/){},但我不知道如何检查按钮点击。而且,根据当前的性能,似乎直到模糊之后才注册按钮单击。

提前谢谢。

你可以

这样做:

.HTML

<form>
   <input type="text" name="name" id="id" />
   <input type="submit" />
</form>

jQuery

$(document).on('blur', 'input:not([type="submit"])', function(e) {
   var key = e.keyCode;  // the key pressed
   var elem = e.target;  // the element blurred 
   myFunction(name);
});
$(document).on('click', 'input[type="submit"]', function() {
   submit();
});