jquery - Parsley 自定义验证器在电子邮件检查中返回 Null
问题描述
晚上好,
我们有一个包含多个字段的 from。
- 电子邮件
- 经过
- 地址
- ETC
我们使用欧芹进行验证。除了访问服务器的电子邮件地址外,所有字段都使用 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() )
我们得到了一些奇怪的结果。如果页面上的任何地方有错误,结果就会返回为“假”。但是当我们验证任何没有错误消息时,它会返回为空。
这使得很难确定何时实际保存记录。该错误仅发生在电子邮件字段上,因为这是我附加此自定义验证器的唯一字段。
任何帮助将不胜感激。
一切顺利,乔治·艾瓦兹
解决方案
我能够进行此调用的唯一方法是将 async:false 添加到 $.ajax 调用中。在调试中变得明显的问题清楚地表明,由于调用是异步的,当数据库返回响应时,对于欧芹来说已经太晚了。
推荐阅读
- typescript - 从泛型类型映射实例化类型化的具体类型?
- c# - ASP.NET MVC / C#:如何显示属于另一个控制器的部分视图数据
- vscode-extensions - HTML 属性中 JSON 的 VS Code TextMate 语法是什么
- sqlite - 如何在sqlite中做小于等于日期
- javascript - 无法在 ios 中导入 GoogleMaps
- python - 如何使用熊猫将多行组合成具有多条件的行
- php - 第二个创建按钮后出现错误
- anylogic - 在 Anylogic 中设置实验的长度
- javascript - 如何在 js 中分离不同数组对象中的键/值?
- node.js - 快速车把无法正确呈现 if 语句