100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > html表单中添加手机短信认证 表单提交前验证短信验证码是否正确

html表单中添加手机短信认证 表单提交前验证短信验证码是否正确

时间:2023-12-22 12:57:23

相关推荐

html表单中添加手机短信认证 表单提交前验证短信验证码是否正确

自己做的一个用户注册的表单,注册需要验证手机号,会发送短信验证码,所以在用户填写完验证码之后点击注册,再提交表单之前先请求后台验证一下短信验证码是否正确,错误会有提示,正确就会提交表单注册.

前端使用thymeleaf模板,semantic UI框架,后台是spring boot

先看注册的form

请求正确填写注册信息哦!

发送验证码

注册

这里采用的方法是在form标签中使用onsubmit,thymeleaf的写法是th:οnsubmit="'return 执行函数()'",我js中的实现看下面代码

function validateMsgCode() {

var result = false;

var data = {

telPhone: $("input[name='telPhone']").val(),

msgCode: $("input[name='msgCode']").val()

};

syncAjaxData("POST", "/validateMsgCode", JSON.stringify(data), function (response) {

console.log("result=" + response);

if (response) {

result = true;

}else {

console.log("验证码错误");

$('.ui.form').form('add prompt', "msgCode", "验证码错误或超时");

}

});

return result;

}

重点就在这里了

这里Ajax请求的后台就是一个短信的验证没什么可说的,Ajax是我封装了以下的,里面有一句重要的代码async: false,,就是要将Ajax设为同步的,这样才可以改变result的值,否则Ajax会新开一个异步线程去执行,这样影响不到函数里的变量,验证就没有作用了,

但我这里同步Ajax出现了一个新问题,就是如果验证错误,我会通过semantic中表单验证的方法给指定字段添加错误提示(具体使用方法可以参考官方文档),$('.ui.form').form('add prompt', "msgCode", "验证码错误或超时");,但我在测试中发现这个验证总是闪一下就没了,到现在不明白为什么,

就是下面这个样子,手速快,在它要没了的时候我给截了下来,

注册界面

这样确实是进行字段的验证,验证错误不会提交,正确就会提交注册,但闪一下就没了,这样肯定也是不行,

最后发现主要是onsubmit方法的原因,如果我使用异步Ajax,在一个异步的线程中执行,相当于跳出方法外执行就没有问题,但异步的做不到字段的验证,陷入了纠结中,表单验证和错误提示二者选一个,要么同步Ajax放弃错误提示,要么异步Ajax放弃验证,后者肯定是不行的,但前者的用户体验也会不好,最后想到的办法是二者我都要了,

具体实现就是写在onSubmit方法中写两个Ajax,一个异步一个同步,异步的用来做错误提示,同步用来做字段验证,修改后的js代码就是这样了

function validateMsgCode() {

var result = false;

var data = {

telPhone: $("input[name='telPhone']").val(),

msgCode: $("input[name='msgCode']").val()

};

ajaxData("POST", "/validateMsgCode", JSON.stringify(data), function (response) {

console.log("result=" + response);

if (!response) {

console.log("验证码错误");

$('.ui.form').form('add prompt', "msgCode", "验证码错误或超时");

}

});

syncAjaxData("POST", "/validateMsgCode", JSON.stringify(data), function (response) {

console.log("result=" + response);

if (response) {

result = true;

}

});

return result;

}

先用一个异步的Ajax来做验证错误提示,再用一个同步的Ajax做字段验证,这样可以做到错误提示,并且起到表单验证的作用,缺陷就是多了一次重复的请求,但为了实现效果,多一次请求没有太大影响吧.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。