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