parsley.js 不验证多个验证

Posted

技术标签:

【中文标题】parsley.js 不验证多个验证【英文标题】:parsley.js do not validate several validations 【发布时间】:2018-02-14 05:05:08 【问题描述】:

我已经编写了一些用于验证 textarea 的代码,但它不适用于一个 CKeditor textarea 的多个验证。这是我的代码:

<div id="insdescription" class="col-md-12 input-group" >
                                <textarea type="text" id="insdescription1" name="insdescription"  class="form-control" rows="5"  data-parsley-errors-container="#insdescription-errors" data-parsley-required-message="Это поле необходимо!"  data-parsley-minlength-message="Введите не менее 10 символов!" ><?= $instructors['description']; ?></textarea>
    <script>
      CKEDITOR.replace('insdescription1');
    </script>
    </div>
   <div id="insdescription-errors"></div>

<script type="text/javascript">
                  CKEDITOR.on('instanceReady', function () 
                    $('#insdescription1').attr('minlength', '10');
                    $('#insdescription1').attr('required', '', );
                    $.each(CKEDITOR.instances, function (instance) 
                        CKEDITOR.instances[instance].on("change", function (e) 
                            for (instance in CKEDITOR.instances) 
                                CKEDITOR.instances[instance].updateElement();
                                $('form').parsley().validate();
                            
                        );
                    );
                    );
                </script>

实际上,它适用于 required="" 验证。但它不适用于 minlength="10"。这是截图

【问题讨论】:

【参考方案1】:

您需要创建自己的 Parsley 自定义验证器。

确实,您正在验证 CKEDITOR 的内容,例如,字符串:

1234

变成:

<p>1234</p>

而且最后一个字符串比4长。

自定义验证器可以是:

window.Parsley.addValidator('minTextSize', 
     validateString: function(_value, minTextSize, parsleyInstance) 
         if (!window.FormData) 
             alert('You are making all developpers in the world cringe. Upgrade your browser!');
             return true;
         
         var txt = $(_value).text().trim();
         return txt.length > minTextSize;
     ,
     requirementType: 'integer'
 );

因此,您的文本区域将是:

<textarea id="insdescription1" name="insdescription" class="form-control" rows="5"
    data-parsley-trigger="keyup"
    data-parsley-min-text-size="10"
    data-parsley-errors-container="#insdescription-errors"
    data-parsley-required-message="Это поле необходимо!rrr"
    data-parsley-min-text-size-message="Введите не менее 10 символов!xxx"></textarea>

小提琴是here。

PS:我在你的消息末尾添加了字符,因为我不懂你的语言,我需要测试。

【讨论】:

@JavidAbbasov 如果我只输入一个字符,我会看到消息,只有当我输入超过 10 个字符时,消息才会消失。你测试过小提琴吗? 我测试了小提琴,但在我的代码中它不起作用?? @JavidAbbasov 注意差异。必须有所不同。查看 html、库..... @JavidAbbasov textarea 发生了变化。例如我删除了 type...... 这很有趣。当我写 1 个字母时,它给出了一个错误 yadi.sk/i/Il6qfonk3MfSyV ,但是当我写 2 个或更多时,它不起作用 yadi.sk/i/lyfPafBn3MfT35

以上是关于parsley.js 不验证多个验证的主要内容,如果未能解决你的问题,请参考以下文章

parsley.js 验证但不提交

Parsley JS 未验证

使用 parsley.js 验证表单提交外部表单标记

Parsley.js isValid() 使用自定义验证器返回 null

即使 Parsley 验证失败,.submit() 也会始终执行

如何触发使用 Parsley.js 动态创建的元素的验证?