我有一个返回true或false以通过ajax提交表单的函数
<form method="post" onsubmit="return validate()">
<input type="text" name="user" id="user">
</form>
function validate(){
var n = $("#user").val();
if(n.length<2){
return false;
}
else{
$.ajax({
url: 'ajax/checkuser.php',
global: false,
type: 'POST',
data: {user:n},
async: false, //blocks window close
success: function(data) {
if(data.trim().indexOf('exists')>-1){
alert('user exists);
return false;
}
else if(data.trim().indexOf('ok')>-1){
return true;
}
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
当我按ESC并通过控制台检查Net时,我发现ajax请求返回“ exists”,并且“用户存在”的警报被触发,但是该表单已提交但不应提交
小智 5
现在它不起作用,因为您没有将false响应返回到表单,而是返回了ajax成功回调。
请尝试更新的以下代码段:
<form method="post" onsubmit="return validate()">
<input type="text" name="user" id="user">
</form>
function validate(){
var retValue = false;
var n = $("#user").val();
if(n.length<2){
retValue = false;
}
else{
$.ajax({
url: 'ajax/checkuser.php',
global: false,
type: 'POST',
data: {user:n},
async: false, //blocks window close
success: function(data) {
if(data.trim().indexOf('exists')>-1){
alert('user exists);
retValue = false;
}
else if(data.trim().indexOf('ok')>-1){
retValue = true;
}
}
});
}
return retValue;
}
Run Code Online (Sandbox Code Playgroud)