在回发后,将忽略由JavaScript修改的控件的可见性属性

时间:2009-11-30 18:47:57

标签: asp.net javascript postback visibility

我的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>

谢谢!

2 个答案:

答案 0 :(得分:3)

回发只是说提交html表单的另一种方式。提交表单时,发送到服务器的内容是valuename元素属于inputselect元素的形成。这就是为什么你的“文本”被保留的原因:它是该元素的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';
        }
}