阻止表单提交但保留表单验证

Sto*_*orm 13 javascript forms validation jquery

如何保留默认的HTML表单验证并禁止表单提交?我试过用event.preventDefault()return false.两者都成功地阻止了表单的提交,但都失败了表单验证.我也试过这个解决方案,但即使这样也行不通.

有人能帮帮我吗?

小智 16

无论event.preventDefault()return false;如果工作在形式使用提交.HTML 5验证仍然存在.

jQuery("form").submit(function(e){
  e.preventDefault();  
  //or
  //return false;
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="" method="post">
  <input id="name" type="text" required="required" />
  <input id="email" type="email" required="required" />
  <input type="submit" id="btnSubmit" />
</form>
Run Code Online (Sandbox Code Playgroud)


Lau*_*hen 7

我用checkValidity()reportValidity()来解决这个问题。

假设您的表单的 id 为 FORM_ID

示例代码:

function handleSubmit (e) {
  e.preventDefault(); 
  var ele = document.getElementById("FORM_ID");
  var chk_status = ele.checkValidity();
  ele.reportValidity();
  if (chk_status) {
    ...
    // do your customized submit operations here.  
  }
}
Run Code Online (Sandbox Code Playgroud)

参考

  • 但这仍然会触发默认的 html5 验证消息弹出窗口吗? (2认同)
  • 我投了反对票,因为“checkValidity”和“reportValidity”在“preventDefault”之后不起作用。 (2认同)