saeed rajabi Ответов: 1

Как я могу снова открыть свой div?


привет,
у меня есть одна проблема с пользовательским интерфейсом :
я создаю какую-то форму на своей странице администратора и скрываю все это в css(display:none;)
я увядаю от них с помощью jquery.
проблема заключается в следующем: когда я нажимаю на отправку (в одной из форм на странице)
страница будет обновлена, и моя открытая (в использовании) форма будет закрыта.
как я могу открыть его(последняя открытая форма)?

я делаю это для всей моей формы :

это один значок формы (когда я нажимаю на этот значок, моя скрытая форма будет открыта) :

<li style="margin-top: 9px; margin-right: 20px;z-index:100000000;">
<img src="pic/hotel-icon.png" id="mng" title="اضافه کردن و حذف کردن شهر" alt="اضافه کردن و حذف کردن شهر" width="32px" height="32px" /></li>



это одно из меню, которое должно быть открыто :

<div class="col-lg-12" id="mnga" style="margin-left: auto; margin-right: auto; display:none ;direction:rtl;">
                <!--منوی اضافه کردن شهر-->
                     <div class="panel panel-primary">
                     <div class="panel-heading">اضافه کردن شهر</div>
                     <div class="panel-body">
                         <asp:Label ID="Label5" runat="server" Text="نام شهر :"></asp:Label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br /><br /><asp:Label ID="Label6" runat="server" Text="مخفف شهر :"></asp:Label>&nbsp;<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>&nbsp;<asp:Button ID="Button15" runat="server" Text="ثبت" OnClick="Button15_Click" />&nbsp;&nbsp;&nbsp;<asp:Label ID="Label28" runat="server" ForeColor="#CC3300"></asp:Label></div>
                     </div>
                     <div class="panel panel-primary">
                     <div class="panel-heading">حذف شهر</div>
                     <div class="panel-body"><asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>&nbsp;<asp:Button ID="Button3" runat="server" Text="حذف" OnClick="Button3_Click" />&nbsp;&nbsp;&nbsp;<asp:Label ID="Label29" runat="server" ForeColor="#CC3300"></asp:Label></div>
                     </div>
                <!--پایان منوی اضافه کردن شهر-->
                </div>



и я открываю меню с этим кодом(все остальные меню будут закрыты, и мое меню выбора будет открыто) :
var r = 0;
$(document).ready(function () {
    $('#mng').click(function () {
        r++;
        if (r % 2 == 0) {
            $("#prfa").hide(500);
            $("#mnga").hide(500);
            $("#cmnta").hide(500);
            $("#posta").hide(500);
            $("#htla").hide(500);
            $("#imga").hide(500);
            $("#faclta").hide(500);
            $("#rooma").hide(500);
            $("#roomadda").hide(500);
            $("#facilitya").hide(500);            
        }
        else {
            $("#prfa").hide(500);
            $("#cmnta").hide(500);
            $("#posta").hide(500);
            $("#htla").hide(500);
            $("#faclta").hide(500);
            $("#imga").hide(500);
            $("#rooma").hide(500);
            $("#roomadda").hide(500);
            $("#facilitya").hide(500);
            $("#mnga").fadeIn(500);            
        }
    });
});


Что я уже пробовал:

но когда я нажимаю на кнопку Отправить, моя страница выполняет функцию обновления, и эта форма (которую я выбрал) закрывается, и я не могу видеть результат операции в форме.

1 Ответов

Рейтинг:
7

Vincent Maverick Durano

Имейте в виду, что веб не имеет состояния, ваше всплывающее окно работает на клиенте/браузере. Вызов кнопки приведет к тому, что страница выполнит обратную отправку сервера, таким образом воссоздавая страницу. Другими словами, ваше всплывающее окно исчезнет, когда вы вызовете обратную передачу сервера. Суть в том, что вы не можете одновременно работать с сервером и клиентом.

Теперь вот ваши варианты:

1)Вы можете использовать существующую всплывающую функцию и удалить событие onclick server. Затем вы можете написать функцию JavaScript/jQuery, которая будет выполнять AJAX-запрос к серверу для вызова серверного метода.

2) избавиться от своих клиент-всплывающее окно, и вместо того, чтобы использовать на стороне сервера диалоговое окно "Аякс", например, ModalPopupControl из Аjaxcontroltoolkit. Таким образом, вы все еще можете вызвать событие сервера OnClick и вызвать ModalPopUpControl из своего серверного кода.

3) вы, вероятно, можете сделать хак, а именно добавить скрытое поле, чтобы отметить страницу, если она постбэкит, и решить, показываете ли вы всплывающее окно. Вот краткий пример:

<head runat="server">
    <title></title>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <script>
        $(function () {
            //Bind an event listener to the dialogbeforeclose event
            $("#dialog").on("dialogbeforeclose", function (event, ui) {
                $("#HiddenField1").val("false");
            });
            //judge if show dialog
            if ($("#HiddenField1").val() == "true") {
                $("#dialog").dialog({ draggable: false });
            }

        });

        function ShowDialog() {
            $("#dialog").dialog({ draggable: false });
            $("#HiddenField1").val("true");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
     <asp:HiddenField ID="HiddenField1" runat="server" Value="false" />
    <div id="dialog" title="Basic dialog"  style="display:none;" >
        <asp:Button ID="Button1" runat="server" Text="I can post back" UseSubmitBehavior="false" OnClick="Button1_Click" />
   </div>
    <input id="Button2" type="button" value="Show dialog" onclick="ShowDialog()" />

    </form>
</body>