4

我在 asp.net 的更新面板中遇到了 CKEditor 的问题。我在页面上有多个 CKEditor 的选项卡控件,即每个选项卡中有一个 ckeditor。

  string scriptAdd = @"var editor = CKEDITOR.instances['ctl00_ContentPlaceHolder1_faqeditor']; if (editor) { editor.destroy(true); } CKEDITOR.replace('ctl00_ContentPlaceHolder1_faqeditor');";
  ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "", scriptAdd, true);

上面的代码片段有助于在更新面板中呈现编辑器。但是当回发完成时,它仍然显示较早的值而不是更改的值,即编辑器不会反映在更新面板中更改选项卡后所做的更改。

没有更新面板,同样的事情也能正常工作。

这个问题有什么解决办法吗?

4

3 回答 3

8

只需强制 ckeditor 在更改时更新 textarea :

var ckEditor = CKEDITOR.replace('ctl00_ContentPlaceHolder1_faqeditor');

ckEditor.on("change", function (event) {
    event.editor.updateElement();
});
于 2014-06-11T23:51:52.497 回答
1

抱歉,对此的回复较晚,但答案也可能对其他人有帮助。您还需要在后面的代码中执行以下操作:

ScriptManager.RegisterOnSubmitStatement(this, this.GetType(), "updatescript", "CKEDITOR.instances['ctl00_ContentPlaceHolder1_faqeditor'].updateElement();");

希望这可以帮助。

于 2013-11-01T19:57:37.767 回答
0
<form id="form1" runat="server">
    <asp:ScriptManager ID="scrpM" runat="server" EnablePageMethods="true">
    </asp:ScriptManager>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Button ID="btnshow" runat="server" Text="Show Hidden Editor" />
            <div id="divEditor" runat="server" visible="false">
                <asp:PlaceHolder ID="plCKEditor" runat="server"></asp:PlaceHolder>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
    </form>


----------


Add editor inside a div with visible="false"
and on the button click you set visible="True"
it's works fine for me
于 2016-11-04T18:45:58.330 回答