也许这种方法可以帮助你..它更像是一个暗示比完整的解决方案...
在服务器端,你会做验证,并返回JSON(例如) - $进步是真/假 - 根据验证结果和$错误是阵列(名称,translated_error /或 “”)
局部PHP:
$res = array(
'progress' => $progress,
'errors' => $errors
);
$jsonReturn = json_encode($res);
//output result
header('Content-Type: text/html; charset=utf-8');
echo $jsonReturn;
部分的jQuery:
var errorFields = $([]).add(field1_error).add(field2_error).add(field3_error),
mainFields = $([]).add(field1).add(field2).add(field3);
$('#btnPublish').button().click(function(event){
mainFields.removeClass('ui-state-error');
errorFields.val();
$.ajax({
type: 'POST',
url: your_url,
data: $('#your_form_id').serialize(),
async: false,
success: function (returned_value){
var obj = $.parseJSON(returned_value);
if (obj.progress==true){
alert('Validation successfull');
}else{
$.each(obj.errors, function(index, value) {
if (value!=""){ //it will skip those fields with no errors
$('#'+index).addClass(('ui-state-error'));
$('#'+index+'_error').val(value);
}
});
}//end return ajax
}//end ajax
});
});
这里有什么用AJAX的好处?如果我正确地做到了这一点,那么您将使用整个表单的服务器端验证。它与实际提交页面和显示服务器生成的验证输出以及表单有什么不同? – Krab 2010-11-20 11:41:17
原因是我基于选择的下拉菜单显示其他字段。如果我正常提交页面,那些字段将丢失。我相信要解决这个问题比上面要困难得多。 – 2010-11-20 11:54:08