我们目前正在开发一个java Web应用程序,其中一个jsp页面将动态生成富文本区域,我们正在使用CKEditor来实现此目的。我能够动态生成文本编辑器。在jsp页面上有一个按钮,点击它时,一个java脚本方法将一个带有textarea的新行添加到表中。添加行后,我们使用CKEDITOR.replace(' editorName');将textarea替换为CKEditor的方法。以下是代码:
JSP:
<table id="StepsList" style="float: left" width="100%" ></table>
我们维护一个变量rowNum来跟踪创建的textarea的数量。
脚本:
var step = 'step'+rowNum;
$("#StepsList").append("<tr><td><div class='richTextareaWrapp bottmsp' style='margin-top:10px;'><textarea cols='40' id="+step+" name="+step+"></textarea></div></td></tr>");
CKEDITOR.replace(step);
要读取生成的CKEditors的内容,我们将基于rowNum进行迭代。下面是用java脚本文件编写的代码:
脚本:
for(var j=1;j<=rowNum;j++){
obj = new Object();
step = '#step'+j;
$(step).ckeditor(function( textarea ){
obj.value=$(textarea).val();
});
jsonStepsArr.push(obj);
}
这会抛出一个错误,说&#34; 未捕获的异常:编辑器实例&#34; step1&#34;已附加到提供的元素。&#34;
我在stackoverflow和google上搜索了类似的帖子,其中大多数建议更换或销毁实例。但它不符合我的目的。任何人都可以指出我的错误,或者我是否必须添加任何代码才能使其工作?
提前致谢。
答案 0 :(得分:0)
在创作/访问技巧方面保持一致。
看起来您是否要创建一个正常CKEDITOR.replace
调用的编辑器,如:
CKEDITOR.replace( 'editor1' );
然后使用jQuery调用访问它,如:
$( '#editor1' ).ckeditor( function( textarea ) {
// Do whatever...
} );
它不会互相玩得很好。
您的解决方案:
因此,要么将您的第一个电话改为:
$('#'+step).ckeditor();
或者在第二次调用中使用jQuery,只需直接访问实例:
CKEDITOR.instances[ 'step'+j ].getData()