我的javascript代码修改了一些属性,包括可见性。回发后,一些属性陷入困境,其他属性被“遗忘”。在这里,我尝试将文本框的Text属性和标签的visibility属性更改为“hidden”。回发后,文本将保留,但会显示标签。我很想在回发后隐藏标签。 “display”CSS属性也是如此。或者,如果我试图隐藏<div>
。任何帮助将非常感谢:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ShowHide.aspx.cs" Inherits="WebApplication1.ShowHide" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript" language="javascript">
function ShowHide()
{
debugger;
var txt = document.getElementById('txtNumber');
txt.value='4';
var lbl = document.getElementById('lblShowHide');
if(lbl.style.visibility == 'hidden')
{
lbl.style.visibility = '';
}
else
{
lbl.style.visibility = 'hidden';
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblNumber" runat="server" Text="Enter Number" />
<asp:TextBox ID="txtNumber" runat="server" Text="5" />
<asp:Label ID="lblShowHide" runat="server" Text="Show" />
<input id="btnChangeByJS" type="button" value="HTML Change by JavaScript" onclick="ShowHide();" />
<asp:Button ID="cmdSubmit" runat="server" Text="ASP Submit" />
<asp:HiddenField ID="hfShowHide" runat="server" />
</div>
</form>
</body>
</html>
谢谢!
答案 0 :(得分:3)
回发只是说提交html表单的另一种方式。提交表单时,发送到服务器的仅内容是value
和name
元素属于input
和select
元素的形成。这就是为什么你的“文本”被保留的原因:它是该元素的value
属性。如果您还要保留可见性更改或任何其他更改,则需要向表单添加一个元素,该元素可以在其value属性中以某种方式保存这些更改。
这基本上就是ViewState;一个额外的隐藏元素,其value属性保存当前控件状态。但ViewState适用于维护页面的服务器实例之间的状态。它不是用于将新的更改从客户端移动到服务器。
答案 1 :(得分:0)
挂钩客户端pageLoad事件并隐藏文本框。例如:
function pageLoad() {
var txt = document.getElementById('txtNumber');
txt.value='4';
var lbl = document.getElementById('lblShowHide');
if(lbl.style.visibility == 'hidden')
{
lbl.style.visibility = '';
}
else
{
lbl.style.visibility = 'hidden';
}
}