我使用验证插件的问题是针对远程调用的。
远程检查以确保员工id从db有效。如果它是有效的,那么它返回一个json字符串,其中包含员工信息(名、姓、主管名和工厂名)。
问题是,如果我返回json字符串使用完整:函数的empid字段保持无效的错误类,并将不允许表单提交,即使一切都是有效的。如果我从远程调用返回true, empID字段是有效的,表单将提交(假设其他字段已完成)。
在json回调中是否有一个特定的参数需要设置为true,用于远程:调用完成并为true?我失去了如何解决这个问题,所以任何帮助将非常感激!相关代码见下文。
var ajax_data = new Object;
$('#vpnRequest').validate({
rules: {
empID: {
//required: true,
//minlength: 4,
remote: {
url: "checkEmpID.php",
dataFilter: function(data) { ajax_data = data; return data;},
complete: function() {
var jsonObj = new Object;
jsonObj = jQuery.parseJSON(ajax_data);
var success = jsonObj.status;
if(success == 'false'){
//return success;
}else if(success == 'true'){
$('#fName').val(jsonObj.fName);
$('#lName').val(jsonObj.lName);
$('#superName').val(jsonObj.supervisorFName+" "+jsonObj.supervisorLName);
$('#facilityName').val(jsonObj.facilityName);
$('#empID').addClass('stuff');
$('#empID').removeClass('stuff');
//return success;
}
}
}
}
},
messages: {
empID:{
required: "This field is required",
remote: "Invalid Employee ID"
}
}
});
PHP文件empID检查器:
$string[status] = 'true';
$string[fName] = ucwords(strtolower($row['empFirstName']));
$string[lName] = ucwords(strtolower($row['empLastName']));
$string[supervisorFName] = $superFName;
$string[supervisorLName] = $superLName;
$string[facilityName] = $facilityName;
}
$response = json_encode($string);
echo $response;
} else {
$response = json_encode($valid);
echo $response;
}
添加到验证器代码本身:
if ($.isFunction(param.validateResult)) response = param.validateResult(response);
来自站点http://plugins.jquery.com/content/custom-function-handle-returned-data-remote-function的似乎工作得非常好,因为它正确地验证并提交了表单。如果有人想进一步测试以确保边缘情况,这将是伟大的,但这绝对应该添加到验证器插件,以扩展其功能。