使用欧芹验证Summernote textarea

时间:2017-04-03 21:21:13

标签: jquery validation summernote parsley

我已经使用了欧芹验证器一段时间了,我对它非常满意。虽然,我遇到了一些麻烦,我真的无法理解。

问题在于:我的textarea被Summernote取代,并没有验证。首先让我说清楚,因为我知道问题是什么,但我无法找到答案。

在我的CMS中,用户可以通过Summernote编辑页面文本。加载页面时,文本将出现在编辑器中。查看我的源代码时,我看到了:

<textarea name="content" class="summernote" required data-parsley-required>[The page information is shown, but I removed it because it it too long and unrelated to this topic.]</textarea>

编辑文本时,它会正常验证。但!当我删除我的文本并在编辑器为空时提交表单时,它也将验证。它只是处理表单,当页面重新加载时,它将不显示任何文本。从逻辑上讲,textarea字段是空的。

这里的问题是当页面加载并且textarea有内容时,textarea的验证会将此视为非空,从而提交我的表单。相反,我想验证ACTUAL textarea,其中类名是 note-editable

当短信发送者空着时,总是说它是空的。即使我在编辑器中放入一些文本,它也不会提交,只是因为在页面加载时,textarea没有内容。

所以我的问题是:当我使用Summernote时,如何阻止用户使用Parsley提交空文本字段?因此,当用户从编辑器中删除文本时,表单将无法提交,并且用户会收到错误消息,指出文本字段为空。

非常感谢!

~Michiel

1 个答案:

答案 0 :(得分:0)

我做了一个对我有用的简单自定义函数。

<textarea id="mySummernote" name="mySummernote" data-parsley-summernote-required="" data-parsley-errors-container="#myErrors"></textarea>
<div id="myErrors"></div>
<script type="text/javascript">
    window.Parsley.addValidator('summernoteRequired', {
      validateString: function(value,_value,_el) {
        var val = $($(_el.$element[0]).val()).text().trim();
        if(val.length<1) return false; 
      },
      messages: {
        en: 'This is a required field.',
        it: "Questo valore è richiesto."
      }
    });
</script>

希望这对您有所帮助。 :)