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)
您的问题与必需的属性有关。之后,这一行:
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)