Parsley 验证不等待远程验证 AsyncValidate 完成
Posted
技术标签:
【中文标题】Parsley 验证不等待远程验证 AsyncValidate 完成【英文标题】:Parsley Validation not waiting for Remote Validation AsyncValidate to finish 【发布时间】:2016-05-12 19:21:54 【问题描述】:我有一个表单,我正在尝试对其中一个字段进行欧芹远程验证,但是,在表单验证中,表单在等待来自远程函数的响应之前提交(通过 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);
);
);
【问题讨论】:
【参考方案1】:很难判断您是否需要addAsynchValidator
(您的代码返回一个整数,它应该返回true
或false
)。如果你这样做了,你应该打电话给window.Parsley.addAsyncValidator
(正如你在警告中所说的那样)。其余的代码应该不需要了。
我假设您使用的是最新版本。
【讨论】:
你说得对,我没有使用最新版本...我在我的控制器(MVC 结构)中使用了一种解决方法,这样我就不会尝试通过 jQuery 进行验证。尽管如此,我会将此答案标记为正确。以上是关于Parsley 验证不等待远程验证 AsyncValidate 完成的主要内容,如果未能解决你的问题,请参考以下文章
Parsley 远程和服务器端验证(无法从 json 对象获取内容)
在 Rails 4 中正确实现 Parsley.js 自定义远程验证器