テキストエリアと jQuery 検証プラグイン ( http://bassistance.de/jquery-plugins/jquery-plugin-validation/ )で CKEditor を使用しています。
jQuery プラグインを使用すると、フィールドを空または必須としてマークできます。「製品名」などのフィールドが空の場合、フォームの送信時にフィールドは無効としてマークされます。
ただし、「製品名」を入力すると、入力中にフィールドが自動的に有効としてマークされます。それは素晴らしいことですが、CKEditor 対応のテキストエリアでも同じようにしたいと考えています。すべてがプレーンなテキストエリアでうまく機能します (テキストを入力すると、フィールドが有効になります) が、テキストエリアに CKEditor を追加すると、これは機能しなくなります。
それ以降は、CKEditor テキストエリアが再検証される前に送信ボタンをクリックする必要があります。
これをどのように機能させることができるかについてのアイデアはありますか?
アップデート:
あなたがくれたスレッドから解決策を試しましたが、うまくいきません: Using jQuery to Grab the content from CKEditor's iframe
私は持っている:
CKEDITOR.instances["page_content"].document.on('keydown', function(event)
{
CKEDITOR.tools.setTimeout( function()
{
$("#page_content").val(CKEDITOR.instances.page_content.getData());
}, 0);
});
しかし、それは私に与え続けます:「CKEDITOR.instances.page_content.documentは未定義です」
私のテキストのIDは「page_content」です
これはボタンをクリックした後は正常に機能しますが、ご覧のとおり、何らかの方法でキーダウンイベントをトリガーする必要があります
$("#btnOk").click(function(event) {
CKEDITOR.instances.page_content.updateElement(); //works fine
});
更新 2:
このコードは正しく、CKEDITOR からテキストエリアにデータを取得しますが、まだ検証プラグインで何も起こっていません。テキストを入力してください
CKEDITOR.instances["page_content"].on("instanceReady", function()
{
//set keyup event
this.document.on("keyup", updateTextArea);
//and paste event
this.document.on("paste", updateTextArea);
});
function updateTextArea()
{
CKEDITOR.tools.setTimeout( function()
{
$("#page_content").val(CKEDITOR.instances.page_content.getData());
}, 0);
}