请高手帮忙看看表单提交验证,为啥按了提交按钮后还是会通过呢?
问题描述:
就是验证手机验证码的,如果为空,表单提交是提交不了,但是如果不为空则开始验证AJAX后,就不行了,随便输入个数字就会提交。
<form name="regForm" action="./?act=save" method="post" onsubmit="return checkForm()">
//验证码输入检查
var i = document.getElementById('icode');
var codebad = 1;
function check_icode() {
var tip_phone = document.getElementById('tip_phone');
if (i.value == "") {
tip_phone.innerHTML = '请填写验证码';
return false;
} else {
$.ajax({url:"code_back.asp",type:'POST',data:{i:i.value,p:p.value},dataType:'text',success:function(data){
if(data=='1'){
tip_phone.innerHTML = '请填写验证码2';
return false;
}
}})
}
}
function checkForm() {
return check_icode() ;
}
答
改成这样试试
//验证码输入检查
var icode = document.getElementById('icode').value;
var codebad = 1;
function check_icode() {
var tip_phone = document.getElementById('tip_phone');
if (icode == "" || icode == null || icode.length < 4) {
tip_phone.innerHTML = '请填写验证码';
return false;
} else {
$.ajax({
url:"code_back.asp",
type:'POST',
data:{i:i.value,p:p.value},
dataType:'text',
success:function(data){
}
})
}
}
答
可能是你提交代码的地方有问题,没有根据 retrun false 这个结果进行处理。
答
$.ajax 是异步的,当你输入数字时,传入到ajax进行请求验证,请求发出此时会直接返回,你可以添加个参数async:false,改为同步请求,直接结果返回再退出该方法。
答
代码:
运行结果
1、加上async: false
2、ajax中不能返回东西,用一个变量flag接收,再把结果返回