ckeditor 4仅在IE中异步回发后中断

时间:2014-04-15 21:15:52

标签: jquery asp.net internet-explorer ckeditor asynchronous-postback

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

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


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

在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实例中。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

让ckeditor在更改时更新textarea:

var ckEditor = CKEDITOR.replace(textAreaId);

ckEditor.on("change", function (event) {
    event.editor.updateElement();
});