从 'onblur' 事件中排除表单按钮,JavaScript
Exclude form button from 'onblur' event, JavaScript
我有一个使用 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();
});
我有一个使用 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();
});