Свойство видимости элементов управления, измененное JavaScript, игнорируется после обратной передачи - PullRequest
1 голос
/ 30 ноября 2009

Мой код JavaScript изменяет некоторые свойства, включая видимость. После обратной передачи некоторые свойства зависают, другие «забываются». Здесь я пытаюсь изменить свойство Text текстового поля и свойство видимости метки на «скрытый». После обратной передачи текст сохраняется, но метка отображается. Я бы очень хотел скрыть ярлык после обратной передачи. То же самое происходит со свойством CSS «display». Или, если я попытаюсь скрыть <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 ]

3 голосов
/ 30 ноября 2009

Обратная передача - это просто еще один способ сказать, что HTML-форма была отправлена. Когда вы отправляете форму, отправляемые на сервер вещи only являются свойствами value и name элементов input и select в форме. Вот почему ваш «текст» сохраняется: это атрибут value этого элемента. Если вы также хотите сохранить изменения видимости или любые другие изменения, вам нужно добавить в форму элемент, который может каким-либо образом хранить эти изменения в своем атрибуте value.

По сути, это и есть ViewState; дополнительный скрытый элемент, свойство value которого содержит текущее состояние элементов управления. Но ViewState работает для поддержания состояния между экземплярами сервера вашей страницы. Это не для перемещения новых изменений с клиента на сервер.

0 голосов
/ 30 ноября 2009

Перехватите на стороне клиента событие 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';
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...