Steuert die Sichtbarkeit Eigenschaft, durch JavaScript geändert wird nach dem Postback ignoriert

StackOverflow https://stackoverflow.com/questions/1821646

Frage

Ihr JavaScript-Code einige Eigenschaften modifiziert, Sichtbarkeit enthalten. Nach Postbacks sind einige Eigenschaften fest, die andere „vergessen“. Hier versuche ich, die Text-Eigenschaft eines Textfeldes und die Sichtbarkeit Eigenschaft eines Etiketts zu ändern, um ‚versteckte‘. Nach Postbacks wird der Text erhalten, aber das Etikett. Ich würde sehr gerne das Etikett nach dem Postback versteckt zu halten. Das gleiche geschieht mit der ‚display‘ CSS-Eigenschaft. Oder, wenn ich versuche, eine <div> zu verstecken. Jede Hilfe wäre sehr geschätzt:

<%@ 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>

Danke!

War es hilfreich?

Lösung

Ein Postback ist nur eine andere Art der HTML-Form zu sagen, vorgelegt wurde. Wenn Sie ein Formular einreichen, die nur Dinge an den Server sind in Form der value und name Eigenschaften der input und select Elemente gesendet. Deshalb Ihr „Text“ erhalten bleibt: es ist das value Attribut dieses Elements. Wenn Sie wollen auch Ihre Sichtbarkeit Änderungen erhalten, oder andere Änderungen, müssen Sie ein Element zu Ihrem Formular hinzufügen, die diese Veränderungen irgendwie in seinem Wertattribut halten können.

Das ist im Wesentlichen, was Viewstate ist; ein extra versteckte Element, dessen Wert Eigenschaft enthält den aktuellen Zustand der Kontrollen. Aber Viewstate arbeitet für Zustand zwischen Serverinstanzen Ihrer Seite beibehalten wird. Es ist nicht für die Bewegung neue Änderungen vom Client zum Server.

Andere Tipps

Haken

auf der Client-Seite pageload Ereignis und verstecken es das Textfeld ein. Beispiel:

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';
        }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top