欧芹验证不等待远程验证 AsyncValidate 完成
Parsley Validation not waiting for Remote Validation AsyncValidate to finish
我有一个表单,我正在尝试对其中一个字段进行 parsley 远程验证,但是,在表单验证时,表单在等待远程函数的响应之前提交(通过 asyncValidate()) .因此,即使该字段无效,它也会显示字段错误 css 但表单仍会提交。
我尝试使用 $.Deferrede 对象,但这不起作用。
function add_remote_validation() {
var form = card.el.find('form');
$(form).parsley().addAsyncValidator('validate_function', function (xhr) {
return parseInt(xhr.responseText);
});
}
add_remote_validation();
card.cards['my_card1'].on('validate', function(card){
add_remote_validation();
var result = $.Deferred();
// test any asyncronous validation before doing regular validation
$(form).parsley().asyncValidate()
.done(function(){
var valid = $(form).parsley().validate();
if(valid) {
result.resolveWith(valid);
} else {
result.rejectWith(valid);
}
})
.fail(function(){
result.rejectWith(false);
});
});
很难判断您是否需要 addAsynchValidator
(您的代码 return 是一个整数,它应该 return true
或 false
).如果你这样做,你应该调用 window.Parsley.addAsyncValidator
(正如你在警告中被告知的那样)。其余代码应该不需要。
我假设您使用的是最新版本。
我有一个表单,我正在尝试对其中一个字段进行 parsley 远程验证,但是,在表单验证时,表单在等待远程函数的响应之前提交(通过 asyncValidate()) .因此,即使该字段无效,它也会显示字段错误 css 但表单仍会提交。
我尝试使用 $.Deferrede 对象,但这不起作用。
function add_remote_validation() {
var form = card.el.find('form');
$(form).parsley().addAsyncValidator('validate_function', function (xhr) {
return parseInt(xhr.responseText);
});
}
add_remote_validation();
card.cards['my_card1'].on('validate', function(card){
add_remote_validation();
var result = $.Deferred();
// test any asyncronous validation before doing regular validation
$(form).parsley().asyncValidate()
.done(function(){
var valid = $(form).parsley().validate();
if(valid) {
result.resolveWith(valid);
} else {
result.rejectWith(valid);
}
})
.fail(function(){
result.rejectWith(false);
});
});
很难判断您是否需要 addAsynchValidator
(您的代码 return 是一个整数,它应该 return true
或 false
).如果你这样做,你应该调用 window.Parsley.addAsyncValidator
(正如你在警告中被告知的那样)。其余代码应该不需要。
我假设您使用的是最新版本。