我正在使用jQuery验证插件进行FuelUX向导表单验证。现在我需要通过远程验证来验证几个字段。由于我的表单位于向导中,当我单击“下一步”按钮时需要进行验证,我添加了一个自定义规则进行验证,如下所示:
$.validator.addMethod("validateRule", function(value, element) {
var validator = this;
$.ajax({
url: url,
type:"POST",
data: data,
})
.done(function(valid) {
if (valid == "true") {
return true;
} else {
var errors = {};
errors[element.name] = valid;
validator.showErrors(errors);
return false;
}
})},'’);
我的验证来自:
$('#create').validate({
errorElement: 'div',
errorClass: 'help-block',
focusInvalid: true,
rules: {
field1: {
required: true
},
title: {
required: true,
validateRule:true
},
单击“下一步”按钮时,我正在检查显示的表单是否有效
$('#fuelux-wizard').ace_wizard().on('change' , function(e, info){
if (info.direction == 'next' && !$('#create').valid()) {
return false;
}
}).on('finished', function(e) {
$('#create').submit();
}).on('stepclick', function(e){
//return false;//prevent clicking on steps
});
这里的问题是,当我检查$(' #create')。valid()时,无论我从服务器获取什么,它总是假的。我认为它不是在等待ajax调用完成并转移到代码的下一行。如何解决这个问题?