http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/我使用这个表单插件。我们可以调用Separate函数进行验证
<input type="text" id ="empno " class="validate['required',FuncCall[empnos]]">
"empnos" : {
"nname":"empvalidate()",
"alertText":"* This EMP NO is not there "
},
function empvalidate(){
var empno = $("#empno").val();
if(empno!=''){
$.ajaxSetup ({cache: false});
$.getJSON("emp.php",{'param1' : $("#param1").val(),'empno' :$("#empno").val()},
function (data){
if(data['status']==="true"){
exists="true";
}else{
exists="false";
}
});
}
return exists;
}
从上面的函数我不能返回true或false,因为它具有无穷大的功能。 如果状态为真,我怎么能返回true,反之亦然。它总是让我错误
答案 0 :(得分:2)
Ajax方法getJSON异步执行,因此您的方法在请求服务器返回值之前返回“exists”。 因此,您需要将ajax请求设置为async = false,如下所示:
UPD:好的,请参阅功能的完整版:
function empvalidate() {
var exists = false; // default return value is false
var empno = $("#empno").val();
if (empno != '') {
$.ajax({
url: "emp.php",
async: false,
dataType: "json",
data: {'param1': $("#param1").val(), 'empno': $("#empno").val()},
success: function (data) {
exists = data.status; // set status of existence to outer variable
}
});
}
return exists; // return actual value
}
小心,我没有测试上面的代码,所以你需要了解每行代码的原因。