首页 > 解决方案 > Parsley 自定义验证器在电子邮件检查中返回 Null

问题描述

晚上好,

我们有一个包含多个字段的 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() )

我们得到了一些奇怪的结果。如果页面上的任何地方有错误,结果就会返回为“假”。但是当我们验证任何没有错误消息时,它会返回为空。

我已从 chrome 附加了 console.log 在此处输入图像描述

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

任何帮助将不胜感激。

一切顺利,乔治·艾瓦兹

标签: jqueryparsley.jsparsley

解决方案


我能够进行此调用的唯一方法是将 async:false 添加到 $.ajax 调用中。在调试中变得明显的问题清楚地表明,由于调用是异步的,当数据库返回响应时,对于欧芹来说已经太晚了。


推荐阅读