【发布时间】:2014-05-30 10:56:13
【问题描述】:
我已经解决了这个问题。我将 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 实例中。
非常感谢您提出任何建议 -- 并感谢您抽出时间查看我的问题。
【问题讨论】:
标签: jquery asp.net internet-explorer ckeditor asynchronous-postback