无法将动态加载的teaxtarea转换为ckeditor

时间:2013-11-14 21:27:22

标签: javascript html ajax ckeditor

点击链接后调用此get_content函数。

function get_content(n)
{
    var hr=new XMLHttpRequest();
    var url="./updatecontent.php";
    var vars="id="+n;
    hr.open("POST",url,true);
    hr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    hr.onreadystatechange=function()
    {
        if(hr.readyState==4 && hr.status==200)
        {
            var return_data=hr.responseText;
            document.getElementById("content").innerHTML=return_data;
        }
    }
    hr.send(vars);
    document.getElementById("content").innerHTML='<img src="./img/loading.gif">';
}

<div id="content"></div>

以下是响应数据

<div id="text-editor" style="width:100%;">
<form action="" method="post">
<textarea class="ckeditor" name="editor1" id="txt1"></textarea>
<input type="submit" name="update" value="Update">
</form>
</div>
<script  src="./ckeditor/ckeditor.js"></script>

响应数据已成功添加到div id =“content”

ckeditor的相对链接是正确的。但是textarea没有转换为CKeditor。 哪里出错了?请帮忙。

1 个答案:

答案 0 :(得分:3)

在这种情况下,您需要在更改内容后调用CKEDITOR.replace('editor1')

所以在你的情况下它将是

function get_content(n)
{
    var hr=new XMLHttpRequest();
    var url="./updatecontent.php";
    var vars="id="+n;
    hr.open("POST",url,true);
    hr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    hr.onreadystatechange=function()
    {
        if(hr.readyState==4 && hr.status==200)
        {
            var return_data=hr.responseText;
            document.getElementById("content").innerHTML=return_data;
            CKEDITOR.replace('editor1'); // <-- add this line
        }
    }
    hr.send(vars);
    document.getElementById("content").innerHTML='<img src="./img/loading.gif">';
}