的.cs
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
StringBuilder str = new StringBuilder();
str.Append("<script language='javascript'>($('#phnoe').show();)</script>");
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "chp", str.ToString(), true);
}
的.aspx
<asp:CheckBox ID="ch_p" Text="phone" runat="server" AutoPostBack="true"
oncheckedchanged="CheckBox1_CheckedChanged"/>
</div><div id="p" style="float:left;"><asp:TextBox style="float: left;" runat="server" id="phnoe" Visible="false"></asp:TextBox></div></div><br />
输出 - on checkedchanged //]]&gt;出现在页面顶部
答案 0 :(得分:2)
你应该改变这个
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "chp", str.ToString(), true);
到
ScriptManager.RegisterStartupScript(this, this.GetType(), "chp", str.ToString(), false);
ScriptManager.RegisterStartupScript在页面上呈现所有Dom内容时添加javascript代码。
由于您已经在字符串构建器中添加了脚本标记,因此无需将addScriptTag参数设置为true。
但是在您的aspx标记中,您将文本框设为visible =“false”。
<asp:TextBox style="float: left;" runat="server" id="phnoe" Visible="false">
</asp:TextBox>
所以它不会渲染,你的脚本将无法显示它。
您应该更改标记,如
<asp:TextBox style="float: left;" runat="server" id="phnoe" style="display:none;">
</asp:TextBox>
因此,它可以在网络上呈现,但不会显示。因为我们将其显示设置为无。
如果您只想在复选框检查中显示它,则无需将其设置为服务器端。你可以用jquery轻松完成。
所以你的标记应该
<div>
<asp:CheckBox ID="ch_p" Text="phone" runat="server" />
</div>
<div id="p" style="float:left;">
<asp:TextBox style="float: left;" runat="server" id="phnoe" style="display:none">
</asp:TextBox>
</div></div><br />
使用jquery创建一个Javascript代码
$(function(){
$('[ID$=ch_p]').on("click",function(){
if(this.checked)
$('[ID$=phnoe]').show();
else
$('[ID$=phnoe]').hide();
});
});
它将解决您的问题。
希望它会对你有所帮助。