如何让 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版本
我继承了一些使用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版本