2

我有一个简单的页面,它有两个输入文本字段和一个 textarea 字段。我一直在为这三个表单字段关联一个按键事件。但是现在我已经使用 CKEditor 将 textarea 更改为富编辑器。我使用了 ckeditor.js、adapters/jquery.js 和其他来自 CKEditor 的相关文件。但是现在与 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 实例并为表单字段关联一个按键事件:

....
 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 回答