晚上好,
我们有一个来自多个字段的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。
这使得很难确定何时实际保存记录。该错误仅在电子邮件字段上发生,因为这是我将此自定义验证程序附加到的唯一字段。
任何帮助都将不胜感激。
祝您一切顺利,乔治·埃瓦兹
我能够进行此调用的唯一方法是将async:false添加到$ .ajax调用中。在调试中变得很明显的问题明确表明,由于该调用是异步的,因此在数据库返回响应时,对于荷兰芹来说为时已晚。