【问题标题】:Parsley.js isValid() returns null using custom validatorParsley.js isValid() 使用自定义验证器返回 null
【发布时间】: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 的事情。

【问题讨论】:

    标签: jquery ajax forms validation parsley.js


    【解决方案1】:

    选项1:

    由于您的代码适用于 Promise,因此请从 documentation 移至 whenValidate

    返回布尔值或空值的 validate({group, force}) 方法 由于远程验证始终返回 open 将始终返回 null 承诺。

    请注意,如果为 true,您的处理程序缺少 return 语句。

    请阅读parsley.remote.js 的内部实现以供参考(如果仍然复杂,请移至选项2)

    选项2:

    您可以将parsley.remote.js js 文件添加到您的项目中,然后使用addAsyncValidator

    远程使用herehere的好例子。

    【讨论】:

    • 你能根据你更新的内容编辑你的问题吗?因为我看不到它返回任何真或假
    • 更新了我的答案,希望对你有帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多