2

2 つの入力テキスト フィールドと 1 つのテキストエリア フィールドを持つ単純なページがあります。私は、これら 3 つのフォーム フィールドに keypress イベントを関連付けることで作業を進めてきました。しかし、CKEditor を使用してテキストエリアをリッチ エディターに変更しました。CKEditor の ckeditor.js、adapters/jquery.js、およびその他の関連ファイルを使用しました。しかし、テキストエリアに関連付けられた keypress イベントが失敗するようになりました。ここに私が取り組んでいるコードの一部があります。

.....
<input type="text" id="sub" name="subject" autocomplete="off">
<input type="text" id="rec" name="recvr" autocomplete="off">

 <textarea  cols="90" rows="18"  name="body" id="content" >  </textarea>

...

そして私のjqueryでは、CKEditorインスタンスを作成し、フォームフィールドのキープレスイベントを関連付けるために次のものがあります:

....
 if(CKEDITOR.instances['body']){
    delete CKEDITOR.instances['body'];
 }
 CKEDITOR.replace('body');

/*translate letters on key press */
$("input#sub").keypress(function(event){
  //alert(this.form);
  TranslateOnKeyPress(event, this.form);
});
/*$("textarea#body").keypress(function(event){
     // alert(this.form);
     TranslateOnKeyPress(event, this.form);
});
*/
 CKEDITOR.instances['body'].on('instanceReady', function() {
      this.document.on('keypress', function(event){
          alert(event + ">> " + this.form + " <<< ");
          TranslateOnKeyPress(event, this.form);
      });
 });
....

そのため、問題はthis.form最後のリターンの CKEditor インスタンスにundefinedあり、TranslateOnKeyPress(event, this.form) が機能しなくなります。他のテキスト フィールドは完全に機能します。したがって、私の問題は、フォームイベントを関数で適切に処理することにあるようです。ここで手を貸してくれる人はいますか?あなたの助けは非常に高く評価されます。

ありがとう、

4

1 に答える 1

0

これにより、テキストエリアの親フォームを表す jQuery オブジェクトが得られます。

    CKEDITOR.instances['body'].on('instanceReady', function (e) {
        this.document.on('keypress', function (event) {
            var form = $("#" + e.editor.name).closest("form");
            TranslateOnKeyPress(event, form[0]);
        });
    });

(CK Editor 4.2でテスト済み)

于 2013-09-04T09:42:10.507 に答える