我有一个名为 txt_edit_content
的 Asp 文本框,其值正在使用 JavaScript Wysiwyg 进行复制和操作。格式化文本存储在 JavaScript 变量中,我可以像这样访问它:
var data = CKEDITOR.instances.<%=txt_edit_content.ClientID%>.getData();
我试图做的就是将该值发送回服务器。因此,我已使用 Sys.WebForms.PageRequestManager
注册了以下 JavaScript 函数
function BeginRequestHandler(sender, args) {
try{
var data = CKEDITOR.instances.<%=txt_edit_content.ClientID%>.getData();
console.log("Textbox Before: " + $('#<%=txt_edit_content.ClientID%>').val());
console.log(" Javascript: " + data);
$('#<%=txt_edit_content.ClientID%>').val(data);
console.log(" Textbox After: " + $('#<%=txt_edit_content.ClientID%>').val());
} catch (err) {
console.log("Error:" + err.message);
}
}
像这样注册它:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
POST 之前的 JavaScript 控制台输出如下所示:
Textbox Before: 1234 Javascript: <p>1234567</p> Textbox After: <p>1234567</p>
我遇到的问题是,即使该值在页面上发生更改,也不会发送到服务器。但是,正在发送“文本框之前”值。如何从 JavaScript 中获取值并放入代码中?
编辑:
我可以使用“保存”按钮上的 PostBackTrigger
但不能使用 AsyncPostBackTrigger
来使此代码正常工作。但是,我需要(愿意)在“保存”按钮上使用 AsyncPostBackTrigger
。
最佳答案
使用更新面板并在其中包含一个隐藏字段。然后在处理程序中设置隐藏字段的值。
function BeginRequestHandler(sender, args) {
try{
var data = CKEDITOR.instances.<%=txt_edit_content.ClientID%>.getData();
console.log("Textbox Before: " + $('#<%=txt_edit_content.ClientID%>').val());
console.log(" Javascript: " + data);
$('#<%=txt_edit_content.ClientID%>').val(data);
console.log(" Textbox After: " + $('#<%=txt_edit_content.ClientID%>').val());
$('#<%=hidValue.ClientID%>').val(data);
} catch (err) {
console.log("Error:" + err.message);
}
}
现在在后面的代码中您可以获取 hidValue 的值。
关于javascript - 使用 C# 异步回发保存 Javascript 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144989/