0

我已经解决了这个问题。我将 CKEditor 移到了 UpdatePanel 之外。UpdatePanel 中的按钮允许我触发异步回发,这仍然让我可以访问 RepeaterItem 中需要将其保存在数据库中的数据。

在 UpdatePanel 之外使用 CKEditor,它在异步回发后不再锁定。我仍然不知道究竟是什么导致 CKEditor 在回发后中断,但至少我学会了如何防止它发生。希望这个答案可以帮助其他人一段时间。


我有一个 ASP.NET 中继器将多个 UpdatePanel 放置到我的页面中,其中包含 CKEditor 文本框供用户回答问题。我提供了一个“保存答案”按钮,允许异步回发保存当前答案。

在 Internet Explorer 中,在异步回发(正确保存答案)之后,页面被锁定,并且不允许用户再次选择文本框或页面上的任何文本。用户仍然可以单击“继续”按钮和任何链接以离开页面,并且单击 CKEditor 图标之一(例如粗体按钮或字体大小下拉菜单)恢复单击文本框并选择的能力页面上的文字。

其他所有主要浏览器都可以正常工作。这发生在 IE 8+ 中(在 8 之前不支持,否则它也可能在那里发生)。

以下是相关代码:

Javascript

    function pageLoad() {
        $(".editor").each(function () {
            $(this).ckeditor().editor.on("change", function (event) {
                // Updates the asp control on change
                event.editor.updateElement();
            });
        });
    }

标记(在重复器 ItemTemplate 中,针对适用数据中的每个问题重复)

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        ... Question stuff here...
        <asp:TextBox ID="txtAnswer" runat="server" TextMode="MultiLine" CssClass="editor"></asp:TextBox>
        <div>
        <asp:Button ID="btnSave" runat="server" Text="Save Answer" Enabled="false" OnClick="SaveAnswer" />
        </div>                    
    </ContentTemplate>
</asp:UpdatePanel>

C# 中没有发生异常,并且 SaveAnswer() 方法成功运行,保存了答案,但是那个小故障对我来说似乎很奇怪......尤其是阻止您选择页面上的任何文本的事实,而不是就在 CKEditor 实例中。

任何建议都非常感谢 - 并感谢您花时间查看我的问题。

4

2 回答 2

0

我已经解决了这个问题。我将 CKEditor 移到了 UpdatePanel 之外。UpdatePanel 中的按钮允许我触发异步回发,这仍然允许我访问RepeaterItem 中的数据,我需要将其保存在数据库中。

在 UpdatePanel 之外使用 CKEditor,它在异步回发后不再锁定。我仍然不知道究竟是什么原因导致 CKEditor 在回发后中断,但至少我学会了如何防止它发生。希望这个答案可以帮助其他人一段时间。

于 2014-04-18T22:55:33.147 回答
0

让 ckeditor 在更改时更新 textarea :

var ckEditor = CKEDITOR.replace(textAreaId);

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