如果validation是错误的,如何不提交表单

如果其中一个validation是错误的,我如何确保表单不会提交?

$('#form').submit(function(){ validateForm1(); validateForm(document.forms['dpart2']); validateForm(document.forms['dpart3']); }); 

如果函数返回false,则不会提交表单。

 $('#form').submit(function(){ return validateForm1() && validateForm(document.forms['dpart2']) && validateForm(document.forms['dpart3']); } }); 
 $('#form').submit(function(){ return (validateForm1() && validateForm(document.forms['dpart2']) && validateForm(document.forms['dpart3'])) }); 

基本上,您在事件处理函数中返回false。

好的,其他一些解决方案会有一个懒惰的失败…你可能希望所有的validation都运行,以便显示所有错误。 假设您的validation方法如果失败则返回false。

 $("#myform").submit(function() { var ret = true; ret = validateForm1() && ret; ret = validateForm(document.forms['dpart2']) && ret ret = validateForm(document.forms['dpart3'])) && ret return ret; }); 

这样就可以调用所有validation器,但任何失败的布尔值都将导致失败。

如果validateForm(…)和validateForm1()返回一个布尔值(true表示没有发生validation错误),那么您尝试这样做:

 $('#form').submit(function(){ if (!validateForm1() || !validateForm(document.forms['dpart2']) || !validateForm(document.forms['dpart3'])) { return false; } }); 

自动出现的想法:即使您实施了彻底的客户端validation,也要准备好在服务器上接收您可能想象的任何无效请求数据。

客户端validation永远不会阻止您进行服务器端validation。 这只是可用性的一个奖励。