parsley.js 不适用于 ckeditor textarea

Jav*_*sov 2 javascript jquery parsley.js

我用 parsley.js 验证器为我的表单编写了代码,但是除了 CKEditor textareas 之外它工作正常。问题出在哪里?这是截图在此处输入图片说明

这是我的代码:

<script type="text/javascript">
 CKEDITOR.on('instanceReady', function(){
      $.each( CKEDITOR.instances, function(instance) {
        CKEDITOR.instances[instance].on("change",function(e) {
          for ( instance in CKEDITOR.instances)
          CKEDITOR.instances[instance].updateElement();
        });
      });
  });
</script>

<h2 class="heading">Description</h2>
<div class="controls">
  <textarea name="description" id="description" required="" data-parsley-errors-container="#description-errors" data-parsley-required-message="??? ???? ??????????!"></textarea>
</div>
<div style="margin-bottom: 20px;" id="description-errors"></div>

<script>
  CKEDITOR.replace('description');
</script>

<h2 class="heading">Purpose</h2>
<div class="controls">
  <textarea name="purpose" id="purpose" required="" data-parsley-errors-container="#purpose-errors" data-parsley-required-message="??? ???? ??????????!"></textarea>
  <div style="margin-bottom: 20px;" id="purpose-errors"></div><br><br>
  <button type="submit" name="submit">Submit</button>
</div>


<script>
  CKEDITOR.replace('purpose');
</script>
Run Code Online (Sandbox Code Playgroud)

gae*_*noM 5

您的问题与必需的属性有关。之后,这一行:

CKEDITOR.on('instanceReady', function () {
Run Code Online (Sandbox Code Playgroud)

您需要为每个文本区域再次添加这样的属性,因为在 CKEDITOR 初始化阶段丢失了(即:CKEDITOR.replace('purpose');)。

对于特定的文本区域,您可以编写:

$('#description').attr('required', '');
Run Code Online (Sandbox Code Playgroud)

对于属于表单的所有文本区域:

$('form textarea').attr('required', '');
Run Code Online (Sandbox Code Playgroud)

从你的评论:

当错误显示在其他输入中并且当我输入某些内容时它会自动删除。但在 textareas 它不会离开

为了解决这部分,在CKEDITOR更改事件上,需要触发欧芹验证。下面的行可以解决问题:

$('form').parsley().validate();
Run Code Online (Sandbox Code Playgroud)

更新后的代码(此处为 jsfiddle ):

CKEDITOR.on('instanceReady', function () {
Run Code Online (Sandbox Code Playgroud)