Parsley.js isValid() 使用自定义验证器返回 null
Posted
技术标签:
【中文标题】Parsley.js isValid() 使用自定义验证器返回 null【英文标题】:Parsley.js isValid() returns null using custom validator 【发布时间】:2019-06-20 00:30:42 【问题描述】:我正在使用 parsley.js(2.8.1) 自定义验证器来检查服务器上是否已经存在输入代码。
一切正常,但parsley().isValid()
和parsley().validate()
在提交时返回null
。
删除自定义验证器工作正常,但我无法从客户端检查服务器上存在的代码。
<form id="product-form">
[....]
<input id="product-code"
data-parsley-code="check-code" data-parsley-length="[3,32]"
type="text" class="form-control" required>
[....]
</form>
<script>
$(function()
let formInstance = $('#product-form');
formInstance.parsley();
Parsley.addValidator('code',
validateString: function(value, requirement)
let xhr = $.post('/product/' + requirement + '/' + value);
return xhr.then(function (json)
if (!json.status)
return $.Deferred().reject(json.message)
)
,
messages: en: 'Failed to check product code.'
);
formInstance.on('submit', function(e)
e.preventDefault();
console.log(formInstance.parsley().validate()); // returns null
console.log(formInstance.parsley().isValid()); // returns null
if (formInstance.parsley().isValid()))
[.....]
[.....]
</script>
我想检查并提交表单并做 ajax 的事情。
【问题讨论】:
【参考方案1】:选项1:
由于您的代码适用于 Promise,因此请从 documentation 移至 whenValidate
:
返回布尔值或空值的 validate(group, force) 方法 由于远程验证始终返回 open 将始终返回 null 承诺。
请注意,如果为 true,您的处理程序缺少 return 语句。
请阅读parsley.remote.js 的内部实现以供参考(如果仍然复杂,请移至选项2)
选项2:
您可以将parsley.remote.js
js 文件添加到您的项目中,然后使用addAsyncValidator
远程使用here和here的好例子。
【讨论】:
你能根据你更新的内容编辑你的问题吗?因为我看不到它返回任何真或假 更新了我的答案,希望对你有帮助:)以上是关于Parsley.js isValid() 使用自定义验证器返回 null的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery.inputmask 插件进行 parsley.js 验证
使用对象填充的 parsley.js 验证 <select> 时遇到问题
如何让 Parsley JS 验证在 Tinymce 富文本区域上工作?具体来说,如何通知 Parsley.js Tiny MCE 的更改?