欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

form表单提交前进行ajax或js验证,校验不通过不提交

程序员文章站 2022-07-15 16:43:35
...

在使用form表单进行提交数据前,需要进行数据的校验->表单的校验(如:两次密码输入是否相同)+后台数据的校验(如:账号是否存在),这个时候,如果哪步校验不通过,表单将停止提交,同时避免后台主键唯一的报错。

那么,如何实现呢,首先,需要再form表单处加入οnsubmit=“return 方法名();”

第二步,写方法,下面是我的例子,供大家参考:

<!--js普通校验-->
function compare(){
var password = document.getElementById("password").value;
	var password2 = document.getElementById("password2").value;
	if(password!=password2){
		alert("两次输入的密码不一致!!");
		return false;
	}
}

这时候,就遇到了问题,(我的其他文章中有js方法的详细终止方式) ajax不是普通的js方法,不能通过return false;终止运行,如何做呢?
这时候就需要用到一点编程的思考–>我们可以定义变量来返回,发生错误时修改变量即可,代码如下:

function checkDate() {          
    var result = true;         //定义返回标识
     $.ajax({
             async: false,    //设置为同步
             type: "post",
             url: "/Mall/Channel/CheckChannelDate",
             data: { startDate: $("#PayStartTime").val() },
             success: function (data) {
                      if (data != 'ok') {
                          alert(data);
                          result = false
                          }                                    
                     }
                });
                return result; //在ajax方法外层返回true or false
        }

这里需要特别注意一点:因为ajax是异步的,所以按照常规的写法,即使验证返回了false,表单也会被submit。所以上面的 async: false, 是必须要写的,我尝试过不加,结果js最后才执行ajax方法,结果就不是预期你想要的那个了。

以上!如果有帮到你,点赞、评论、加关注哟!!!

相关标签: # js篇