javascript之ckeditor 未在弹出对话框中加载通过 ajax 生成的元素

java哥 阅读:29 2025-12-25 22:24:30 评论:0

我正在使用自定义表单并通过 ajax 调用生成表单元素,但 textarea 未使用 ckeditor 加载。此表单加载在弹出对话框上。这是我的代码:

ajax code: 
 
    jQuery.ajax({ 
    type: "POST", 
    url: "reg_arz_ajax2.php", 
    data: "book="+book_arzyabi, 
    dataType : "html", 
    success: function(response){ 
 
        $('#resp').html(response); 
                    ckeditor.replace('fname');  
        $("#fname").ckeditor(); 
    }, 
    error:function (xhr, ajaxOptions, thrownError){ 
        //On error, we alert user 
        alert(thrownError); 
    } 
}); 
 
$( "#dialog-form" ).dialog( "open"); 
 
}); 

PHP 代码:

    echo '<textarea class="ckeditor" cols="80" id="fname" name="fname" rows="10" >test</textarea>'; 

html代码:

  <html> 
 <head> 
 <script type="text/javascript" src="../include/ckeditor/ckeditor.js"></script> 
 <script type="text/javascript" src="../include/ckeditor/sample.js" ></script> 
 </head> 
 
 <body> 
 <form> 
 <fieldset> 
 <label for="name">Name</label> 
 <div id="resp" ></div> 
 </fieldset> 
 </form> 
 </body> 
 </html> 

请帮我解决问题。

请您参考如下方法:

您需要手动将文本区域转换为 CKEditor 实例,因为通过分配类名进行替换仅在页面加载时完成一次。

There are samples on how to convert a textarea to a ckeditor instance ,基本上就是:

CKEDITOR.replace( 'textarea_id' ) 

所以在你的情况下你应该添加

CKEDITOR.replace( 'fname' ) 

到ajax成功回调。

请注意Javascript 区分大小写,因此您应该以大写形式编写CKEDITORreplace 之后的函数调用 ckeditor 也太多了。请参阅官方指南的示例。


标签:ajax
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号