具有多个动态文本区域的 CK编辑器


CKeditor with multible dynamic textareas

我有一个表格,允许提交多个步骤。 当用户单击"添加步骤"时,将显示另一个文本区域。 我正在使用CKeditor。 它在第一次迭代中效果很好,但在所有后续迭代中,它都会显示一个标准文本区域。 这是我的代码:

<form method="post" action="process_project.php">
<b>Steps for your project:</b>
<div>&nbsp;</div>
Step 1
<div id="divWho">
<textarea name="projSteps[]" class="steps" id="1" rows="10" cols="60"></textarea> 
</div>
<div>&nbsp;</div>
<input type="button" value="Add project step" onClick="addTextArea();">
<input type="submit" name="submit" value="submit" />
</form>

<script type="text/javascript">
var counter = 1;
var limit = 11;
function addTextArea() {
if (counter == limit-1) {
alert("You have reached the limit of adding " + counter + " project steps");
return false;
}
else {
var newdiv = document.createElement('div');
newdiv.innerHTML = "Step " + (counter + 1) + " <br><textarea name='projSteps[]' id=counter rows='10' cols='60'>";
document.getElementById('divWho').appendChild(newdiv);
counter++
return true;
}
}
</script>
<script> CKEDITOR.replace('1');</script>

如何使每个新的动态创建的文本区域也使用 CKeditor? 我已经为此工作了几个小时,我被难住了。

我认为你需要移动 CKEDITOR.replace('1'); 在 addTextArea() 方法内,该方法包含在 return 语句之前的 else 块中。

此外,如果您将 replace 参数硬编码为"1",它只会将 id 为 1 的 textarea 的第一个实例转换为 CKEditor,而忽略其他实例。动态生成一个 Id 并将其传递给 repalce 方法。像下面这样,

var step = 'step'+counter; 
div = <textarea name='projSteps[]' id=step rows='10' cols='60'>; 
CKEDITOR.replace(step);

我还没有完全写第二步,我想你可以根据需要修改它。

正在研究类似的功能,这种方法对我有用。

这样用。

<textarea class="ckeditor" name="abc1"</textarea>

并在JS中添加此

CKEDITOR.replaceAll( 'ckeditor' );

我希望它适用于所有文本区域。