JavaScript OnBlur 事件阻止提交 HTML 表单

Posted

技术标签:

【中文标题】JavaScript OnBlur 事件阻止提交 HTML 表单【英文标题】:JavaScript OnBlur event prevents HTML form from being submitted 【发布时间】:2010-10-19 01:47:57 【问题描述】:

考虑以下形式:

<form action="/a" method="post"> 
    <input name="x" type="text" onblur="myonblur(e)" />
    <input name="y" type="text" />
    <input name="submit" type="submit" value="Submit" />
</form>

当焦点位于名称为“x”的元素上并且用户按下提交按钮时,onblur 事件会触发,但不会提交表单。如果我的表单中有onblur events,有什么方法可以让提交按钮按预期工作?

【问题讨论】:

【参考方案1】:

尝试添加

return true;

在调用你的 onBlur 函数之后。您面临的问题可能是由于事件处理程序的“返回错误”预防。

【讨论】:

没有。第一个答案是正确的。我试过你的方法,但没有帮助。 好的。不过这只是一种可能性;)【参考方案2】:

考虑优化您的onBlur() 方法,以减少运行时间。如果您的表单被阻止提交,可能是因为onBlur() 太长而导致浏览器无法执行任何其他操作。

您也可以使用onChange() 方法代替onBlur()。这可能更适合您。

【讨论】:

感谢您的回答。想法是通过 AJAX 调用检查用户名是否存在,因此如果可能的话,使用 onChange() 会更难实现。所以,你的意思是,我没有办法使用 onBlur()? 您应该使用在后台运行的异步 AJAX 请求并且不要挂起浏览器。通过使用这些,即使 ajax 请求没有完成,onSubmit 仍然可以工作。 Jquery 库默认是异步的,看看docs.jquery.com/Ajax/jQuery.ajax

以上是关于JavaScript OnBlur 事件阻止提交 HTML 表单的主要内容,如果未能解决你的问题,请参考以下文章

React - 带有 onBlur 事件的 ul 阻止 onClick 在 li 上触发

javascript中的事件冒泡和事件捕获

为啥我的 Ajax 发布请求在表单提交中被阻止?

onBlur事件不允许链接点击进行注册

[TimLinux] JavaScript input框的onfocus/onblur/oninput/onchange事件介绍

064_Js常用的五大事件 onclick nochanger onload onsubmit onblur