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

时间:2016-01-22 10:59:22

标签: javascript validation parsley.js

我使用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的好处,并且必须做额外的工作来注入错误消息等。

1 个答案:

答案 0 :(得分:0)

而不是validate,请使用whenValidate ...

这会返回一个承诺,因此您可以在解析后显示表单的第二部分。

PS:请务必升级到2.2.0版