Parsley Custom Validator在检查电子邮件时返回Null

问题描述 投票:0回答:1

晚上好,

我们有一个来自多个字段的from。

  • 电子邮件
  • 通过
  • 地址

我们使用欧芹进行验证。除用于访问服务器的电子邮件地址外,所有字段均使用Parsley在本地进行验证。为此,我们使用.addValidator方法。

添加定制验证器的定制代码如下

 window.ParsleyValidator
        .addValidator('checkemail', {
          validateString: function(value)
          {

            return $.ajax({
              url:'ajax/DoesUserExist.php',
              method: "POST",
              data: {email:value},
              dataType: "json",
              success: function(data)
              {
                return true;
              }
            })

          }
      })

我们的html字段如下所示。

 <input name="signup-emailAddress" id="signup-emailAddress" type="email" class="form-control" 
                  data-parsley-required="true"
                  data-parsley-checkemail
                  data-parsley-checkemail-message="Email address already exists."
                  data-parsley-type="email" data-parsley-trigger="focusout" />

ajax调用的效果很漂亮,我们可以从视觉上获得想要的结果。但是然后当我们使用

进行最终验证时
        if ($('#form-sign-up').parsley().validate() )

我们得到一些奇怪的结果。如果页面上的任何地方有错误,则结果将以应有的“ false”形式返回。但是,当我们验证任何内容而没有错误消息时,它又返回为null。

我附有Chrome的console.logenter image description here

这使得很难确定何时实际保存记录。该错误仅在电子邮件字段上发生,因为这是我将此自定义验证程序附加到的唯一字段。

任何帮助都将不胜感激。

祝您一切顺利,乔治·埃瓦兹

jquery parsley.js parsley
1个回答
0
投票

我能够进行此调用的唯一方法是将async:false添加到$ .ajax调用中。在调试中变得很明显的问题明确表明,由于该调用是异步的,因此在数据库返回响应时,对于荷兰芹来说为时已晚。

© www.soinside.com 2019 - 2024. All rights reserved.