2010-12-06 17 views
2

私が取り組んでいるプロジェクトでCKEditorとjQuery検証プラグインを使用しています。CKEditorとjQueryの検証で共通コードを使用する

私は過去数日間、StackOverflow.comでいくつかの非常に役に立つ記事を読んできました。これは、CKEditorを検証してくれたことに本当に感謝しています。

私は、コードを複製したり、個々のインスタンスをIDで指定したりすることなく、プロジェクトの残りの部分に1つのエディタインスタンスを処理するように記述したコードを公開したいと考えています。私の顧客の仕様のおかげで、多くのページにそれらの多くがあります。

私は私のページのフッターに持っているコードは次のとおりです。

$(document).ready(function() { 
CKEDITOR.instances["itissue"].on("instanceReady", function() { 
    // Set keyup event 
    this.document.on("keyup", updateValue); 

    // Set paste event 
    this.document.on("paste", updateValue); 
}); 

function updateValue() { 
    CKEDITOR.instances.itissue.updateElement(); 
    $("#itissue").trigger('keyup');     
} 
}); 

itissueは私のインスタンスのIDで、IDは、各ページに異なっています。私はそれが "すべてのテキストエリア"のための一般的な識別子のいくつかのタイプのタイプに置き換えられる必要があることがわかりますが、これは私のプログラミングとGoogleのスキルが失効したところです。私が代わりにkeyUpイベントを見て、onkeyupのupdateElementを呼び出すのでは、提出ハンドラ内で編集者を検証するでしょう

答えて

2

誰もが任意のアイデアを持っている場合、私は正しい方向にナッジをいただければ幸いです..

質問に答えるには、にCKEDITOR.instancesオブジェクトを反復する必要があります。

// validator submit handler 
var submitHandle = function(){ 
    for(var name in CKEDITOR.instances){ 
     CKEDITOR.instances[name].updateElement(); // update all instances of ckEditors 
    } 
    // proceed with validation check 
}; 

このようにして、エディタインスタンスの名前を知る必要はありません。

+1

助けてくれてありがとうございました。あなたが提案した反復と自分のコードを混ぜて使用しました。フィールドが修正されたときにエラーメッセージが消える必要があったからです。 –

+0

doesnt work ....... –

4

以下は私がこの問題を解決するために使用したコードですが、将来的には誰かのために役立つことを願っています。

<script type="text/javascript"> 
$(document).ready(function() { 
    for(var name in CKEDITOR.instances) { 
     CKEDITOR.instances[name].on("instanceReady", function() { 
      // Set keyup event   
      this.document.on("keyup", updateValue); 
      // Set paste event 
      this.document.on("paste", updateValue);  
     }); 

     function updateValue() { 
      CKEDITOR.instances[name].updateElement(); 
      $('textarea').trigger('keyup'); 
     } 
    }  
}); 
</script> 
+0

ありがとうございます - 私のために働く最初のもの。 – ronaldosantana

関連する問題