我已经使用了欧芹验证器一段时间了,我对它非常满意。虽然,我遇到了一些麻烦,我真的无法理解。
问题在于:我的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
答案 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>
希望这对您有所帮助。 :)