我对Web开发相对较新,对ASP.NET Web Forms来说是全新的。 我有以下用户控件:
CSS:
div.textareaDiv {
-moz-appearance: textfield-multiline;
-webkit-appearance: textarea;
border: 1px solid gray;
font: medium -moz-fixed;
font: -webkit-small-control;
height: 200px;
padding: 2px;
resize:both;
width: 400px;
word-wrap: break-word;
word-break:normal;
}
脚本:
function CatchEnterKey(e) {
if (e.keyCode == 13) {
e.stopPropagation();
return false;
}
return true;
}
标记:
<div id='HtmlTextField' style="height:200px!important;" class="textareaDiv" onkeypress="CatchEnterKey(event);" contenteditable="true" unselectable="off" runat="server"></div>;
当父页面上的“提交”按钮为时,将调用以下代码隐藏函数 压制:
public string GetHtml()
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "gethtml", "alert($('.textareaDiv').html());", true);
return null;
}
这个想法是通过脚本执行来返回div的内部html,但是目前我只想弄明白,为什么我得到空警报。是div的内部html真的在回发时被清空了,我需要考虑一个不同的解决方案,或者我做错了什么?
提前致谢
罗马
答案 0 :(得分:1)
见post on SO。切换您的示例以改为使用RegisterStartupScript。问题是RegisterClientScriptBlock在元素呈现到屏幕之前注册,因此在运行该代码时甚至不呈现该元素。 RegisterStartupScript在所有元素之后呈现。
此外,JQuery还支持延迟运行脚本,直到加载完所有内容。如果用以下代码包装代码:
$(document).ready(function() { /* alert code here */ });
或简写:
$(function() { /* alert code here */ });
这会延迟执行,直到文档准备就绪。那是另一种选择。