javascript - parsley.js 不适用于 ckeditor textarea

标签 javascript jquery parsley.js

我用 parsley.js 验证器为我的表单编写了代码,但是它工作正常,除了 CKEditor textareas。问题出在哪里?这是截图 enter image description here

这是我的代码:

<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>

最佳答案

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

CKEDITOR.on('instanceReady', function () {

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

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

$('#description').attr('required', '');

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

$('form textarea').attr('required', '');

来自您的评论:

When the error shows in other inputs and when I type something it removes automatically. But in textareas it does not leave

为了解决这部分,在 CKEDITOR 更改事件上,您需要触发 parsley 验证。下面一行就可以了:

$('form').parsley().validate();

更新后的代码(jsfiddle here):

CKEDITOR.on('instanceReady', function () {
    $('form textarea').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();
            }
        });
    });
});

关于javascript - parsley.js 不适用于 ckeditor textarea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45924566/

相关文章:

javascript - 如何将 JS 变量传递到 INPUT 语句的 "value="参数中

javascript - 不知道如何使用 jQuery :not() when clicking on anything other that certain div

javascript - js问题输入文件按钮不起作用,弹出窗口不会显示

javascript - 欧芹 - 根据 li 的值隐藏/显示 block

javascript - 使用 parsleyjs onkeyup 验证

javascript - 使用功能更改文本并包含项目符号图像

javascript - 在 Node 中获取 header 重新发送错误

javascript - 从 javascript 访问 json 元素

javascript - 使用元素 ID 填充 jQuery UI 自动完成列表

jquery - 获取 href 链接并通过 jQuery 为其添加值