从asp.net中的可编辑div中获取内部html

时间:2013-02-18 13:11:04

标签: javascript asp.net html

我对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真的在回发时被清空了,我需要考虑一个不同的解决方案,或者我做错了什么?

提前致谢

罗马

1 个答案:

答案 0 :(得分:1)

post on SO。切换您的示例以改为使用RegisterStartupScript。问题是RegisterClientScriptBlock在元素呈现到屏幕之前注册,因此在运行该代码时甚至不呈现该元素。 RegisterStartupScript在所有元素之后呈现。

此外,JQuery还支持延迟运行脚本,直到加载完所有内容。如果用以下代码包装代码:

$(document).ready(function() { /* alert code here */ });

或简写:

$(function() { /* alert code here */ });

这会延迟执行,直到文档准备就绪。那是另一种选择。