CKEditor和按键事件

时间:2013-09-04 09:14:27

标签: ckeditor instance keypress

我有一个简单的页面,它有两个输入文本字段和一个textarea字段。我一直在为这三个表单字段关联一个按键事件。但现在我已经使用CKEditor将textarea更改为富编辑器。我使用了CKEditor中的ckeditor.js,adapters / jquery.js和其他相关文件。但是现在与textarea相关的按键事件失败了。以下是我正在使用的代码的一部分。

.....
<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实例并将表单字段的keypress事件关联起来:

....
 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)停止工作。其他文本字段完美运行。所以,我的问题似乎是正确处理带有该函数的表单事件。有人能帮我一把吗?我们将非常感谢您的帮助。

谢谢,

1 个答案:

答案 0 :(得分:0)

这应该为您提供一个jQuery对象,它表示textarea的父窗体。

    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测试)