我使用Parsley JS验证继承了一些代码,我需要设置远程电子邮件检查规则。这是一个两步形式,在成功验证电子邮件部分后,表单的第二部分通过css显示。
我已将以下属性添加到表单元素中;
data-parsley-remote="/members/members_email_check"
data-parsley-remote-message="This email address is already registered"
现有的表单验证调用如下所示;
$('.reg-step-next').on('click touchstart', function (e) {
e.preventDefault();
if ($('form.register-form').parsley().validate($('.reg-step.active').data('parsley-group'))) {
$(this).parents('.reg-step').removeClass('active').next('.reg-step').addClass('active');
}
});
服务器电子邮件检查工作正常 - 进行呼叫并按预期返回200 / 40x代码。
我遇到的问题是validate()调用没有等待来自远程验证的响应并立即返回null(表示正在进行远程验证),并且永远不会进入下一步。
我知道在这里导致我的问题的异步范例,但是看不到如何设置远程验证的回调。我当然可以在Parsley之外创建我自己的异步调用,但后来我错过了其他Parsley的好处,并且必须做额外的工作来注入错误消息等。
答案 0 :(得分:0)
而不是validate
,请使用whenValidate
...
这会返回一个承诺,因此您可以在解析后显示表单的第二部分。
PS:请务必升级到2.2.0版