我有一张下面给出的表格
<form name="frm_dcg" id="frm_dcg" method="post" enctype="multipart/form-data" action="" onsubmit="return validate_form();" >
<div class="login-form">
<div class="sign-in-htm">
-----------other codes-------
和jquery函数
function validate_form(){
var run_name = $("#run_name").val();
$.ajax({
url: "check_folder.php",
type: "POST",
data: "run_name="+run_name,
success: function (response) {
if(response=="OK"){
con = confirm("File already exists.. Do you want to replace existing file?");
if(con==true){
return true;
}else{
return false;
}
} else{
return true;
}
return false;
}
});
}
ajax工作正常,但问题是表单在任何条件下提交。即使它返回假。请仔细阅读我的代码,如果有任何逻辑错误,请告诉我。
答案 0 :(得分:1)
Ajax是一个异步函数,这意味着您在调用表单后调用return false
。
相反,您必须在validate_form()函数的末尾添加返回false。
function validate_form(){
var run_name = $("#run_name").val();
...
return false; // <-- before the ending curly brace
}
请注意,表单应始终返回false。您可以验证run_name使用它来决定是否应该执行ajax请求。
function validate_form(){
var run_name = $("#run_name").val();
if (run_name.length > 5) { // just an example
// do ajax request
} else {
// show invalid message
}
return false; // always false so the form doesn't submit.
}
答案 1 :(得分:0)
您将在成功结束中返回true / false结果。这不会传递给validate_form()。您在成功处理程序中也有一个逻辑错误,即使响应不是“正常”,也始终返回true。
您需要执行以下操作:
function validate_form(){
var form_success = false; // Always fail by default
var run_name = $("#run_name").val();
$.ajax({
url: "check_folder.php",
type: "POST",
data: "run_name="+run_name,
success: function (response) {
if (response == "OK"){
form_success = confirm("File already exists.. Do you want to replace existing file?");
}
form_success = false;
}
});
return form_success;
}