この質問が以前に尋ねられたことを知っており、以前の質問をすべて読みましたが、jQuery バリデーターで CKEditor フィールドを適切に検証できません。
私のフォームは以下です:
<form id="faq-form">
<p>
<label>Title:</label>
<input type="text" id="faq-title" name="faq-title" class="faq-title" />
</p>
<p>
<label for="question">Question:</label>
<textarea name="question" id="question"></textarea>
</p>
<p>
<label for="answer">Answer:</label>
<textarea name="answer" id="answer"></textarea>
</p>
<p>
<input id="submit-faq" name="submit-faq" type="submit" value="Submit" />
</p>
</form>
両方のテキストエリアは、以下を使用して CKEditor フィールドに変換されます。
<script>
CKEDITOR.replace('question', { toolbar : 'forum' });
CKEDITOR.replace('answer', { toolbar : 'forum' });
</script>
検証しようとすると、タイトル フィールドのみが検証されます。何が間違っているのかわかりません。これが検証用の私のjavascriptコードです(以下はjQueryドキュメント対応関数にあります)。
$('#faq-form').submit(function() {
// Update textareas with ckeditor content
for (var i in CKEDITOR.instances) {
CKEDITOR.instances[i].updateElement();
$.trim($('#' + i).val());
}
// Validate the form
if ( ! $('#faq-form').validate({
rules: {
'faq-title': {
required: true,
minlength: 5
},
answer: {
required: true,
minlength: 20
},
question: {
required: true,
minlength: 20
}
}
}).form()) {
console.log('Form errors');
return false;
}
検証が完了したら、通常のフォームの get または post の代わりに $.post メソッドを使用して、リロードせずにページを更新できるようにします。$.post は検証メソッドの後にありますが、表示する必要はないと思いました。