我正在尝试使用ajax验证验证码,即使返回值false表单正在提交,我的错在哪里?
<form id="myid" name="formname" method="post" action="action.php" onsubmit="return validate();">
JS
function validate()
{
if(document.getElementById('cap').value==''){
alert("Please enter verification number shown in below image");
document.getElementById('cap').focus();
return false;
}
var capval=document.getElementById('cap').value;
capcheck(capval).success(function (data) {
//alert(data); not getting alert message
if(data == "fail"){return false;}
});
// return false; (if I use this, above alert works gives outputs either ok or fail
}
////
function capcheck(capvalue){
return $.ajax({
url: 'check_cap.php',
type: 'GET',
cache: false,
data: {
capid:capvalue
}
});
}
答案 0 :(得分:4)
问题是检查是异步的。您可以取消表单提交,稍后当验证请求返回时,请提交。
尝试这样的事情
in html
onsubmit="return validate(this);"
在js
function validate(form)
{
if(document.getElementById('cap').value==''){
alert("Please enter verification number shown in below image");
document.getElementById('cap').focus();
return false;
}
var capval=document.getElementById('cap').value;
capcheck(capval).success(function (data) {
if(data != "fail") {
form.submit(); // HERE IS THE ASYNC SUBMIT
}
else alert('form error: '+ data);
});
return false; // ALWAYS PREVENT SUBMIT ON CLICK OR ENTER
}