我已经解决了这个问题。我将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实例中。
非常感谢任何建议 - 并感谢您抽出时间查看我的问题。
答案 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();
});