我使用验证插件的问题是专门针对远程调用。
远程检查以确保员工ID在db中有效。如果它有效,则返回带有员工信息(名字,姓氏,主管名称和设施名称)的json字符串。
问题是,如果我使用complete:function返回该json字符串,则empid字段与错误类保持无效,并且即使一切都有效,也不允许表单提交。如果我只是从远程调用返回true,则empID字段有效,表单将提交(假设其他字段已完成)。
在json回调中是否有一个特定的参数需要为远程设置为true:调用finish并且为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;
}
答案 0 :(得分:2)
添加验证器代码本身:
if ($.isFunction(param.validateResult)) response = param.validateResult(response);
来自网站http://plugins.jquery.com/content/custom-function-handle-returned-data-remote-function的似乎运行得非常好,因为它可以正确验证并提交表单。如果有人想进一步测试以确保边缘情况会很好但是这肯定应该添加到验证器插件中以扩展其功能。