如何让 Parsley 远程验证器等待响应?

How can I make Parsley remote validator wait for a response?

我继承了一些使用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() 调用没有等待来自远程验证的响应,并且立即 returns null(我认为表明远程验证正在进行中)并且永​​远不会继续下一步.

我知道导致我出现问题的异步范例,但看不到如何为远程验证设置回调。我当然可以在 Parsley 之外创建自己的异步调用,但是我会错过 Parsley 的其他好处,并且必须做额外的工作来注入错误消息等。

而不是 validate,使用 whenValidate...

这 returns 一个承诺,因此您可以在问题解决后显示表单的第二部分。

PS:一定要升级到2.2.0版本