如何在按下ASP:按钮时使html元素包含文本
本文关键字:html 元素 文本 包含 按钮 ASP | 更新日期: 2023-09-27 18:13:41
我有一个div,其中包含一些文本。
我也有一个asp:按钮,当按下我想检索这个文本。然而,似乎只要我按下按钮,DIV的内容就会重置-很可能是由于回发。
DIV有runat=server"。有没有人有任何想法,可以做些什么,使这个DIV保留其内容按下按钮?在按下按钮之前,数据被操纵了无数次,所以我想尽量避免每次更新会话。
试试这样:
getText = function(){
alert($("#<%=Panel1.ClientID%>").text());
return false;
}
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
<asp:Button ID="Button1" runat="server" OnClientClick="return getText();" ... />
你也可以试试:
$("#<%=Button1.ClientID%>").click(function(){
alert($("#div1").text());
return false;
});
一种方法是在您的标记中抓取按钮单击事件,将div内容存储在隐藏字段中,然后在按钮单击中手动触发回发
尝试使用asp:Panel。它呈现为DIV,您可以在页面生命周期的所有点访问其所有属性。
另一种方法是使用Ajax。具体来说- updatepanel
控制
您可以通过调用按钮的onClientClick事件中的JavaScript函数将div内容存储在隐藏字段中-它将在OnClick事件之前执行,在回发之前执行。这样,就不需要手动触发回发了。
假设你有一个div,一个隐藏字段和按钮与onClientClick和OnClick事件。使用简单的JavaScript函数:
<div id="myDiv" runat="server" ></div>
<asp:Button ID="btnGetDiv" runat="server" Text="Get div value" OnClick="getValueOnServer" OnClientClick="setHiddenFieldF()"/>
<asp:HiddenField ID="hf" runat="server" />
<script type="text/javascript">
function setHiddenFieldF() {
var nevValue = document.getElementById('<%= myDiv.ClientID %>').innerHTML;
document.getElementById('<%= hf.ClientID %>').value = nevValue;
}
</script>
然后,在服务器上,只使用隐藏字段的值
您无法读取div的内容,因为它没有在回发中发送到服务器。只发送形式元素(<input>
、<textarea>
、<select>
等)的值。
如果您真的想读取DIV的内容,您可以将其复制到隐藏的输入(如Kavousi所写)。
只需添加隐藏字段到您的页面:
<asp:HiddenField ID="hidden" runat="server" />
然后在代码后面:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Page.Form.Attributes["onsubmit"] = string.Format(@"$(""#{0}"").val($(""#{1}"").html());", hidden.ClientID, div.ClientID);
}
}
(div
是你的div名称)。
您可以通过阅读hidden.Value
来读取div的内容。