我已经解决了这个问题。我将 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 实例中。
任何建议都非常感谢 - 并感谢您花时间查看我的问题。