3

次のシナリオがあります。

私は 2 つのパネルを持っており、2 つを切り替えるリンクがあります。これらのリンクはページをポストバックしません。パネルをフェードインおよびフェードアウトする JavaScript コードを呼び出して、表示を変更します。

どちらのパネルにも、ページをポストバックするボタンがあります。2 番目のパネルにフェードインした後、viewstate が無効になり、ポストバックが失敗します。

これら 2 つのパネルの可視性を同期する JavaScript からビューステートを有効にする方法はありますか? または、これを機能させるにはポストバックする必要がありますか? もしそうなら、ページを点滅させずにポストバックして、パネルをうまくフェードさせることはできますか?

編集:これは私が持っているコードの一部です。明らかに、div内にたくさんのコントロールがあります

<div id="step_one" class="lt-step-1">
    <asp:Button Text="Entrar" ID="btnPost1" OnClick="btnPost1_Click" ValidationGroup="Step1Val" CssClass="btn btn-primary lt-width-5" runat="server" />
    <a href="#" id="link_Step_Two"><span class="icon-repeat"></span>Step Two</a>
</div>
<div id="step_two" class="lt-step-2 hide">
    <asp:Button Text="Confirmar" ID="btnPost2" OnClick="btnPost2_Click" ValidationGroup="Step2Val" CssClass="btn btn-primary lt-width-5" runat="server" />
    <button type="button" id="btn_cancel_step_two" class="btn">Cancelar</button>
</div>

<script>
    require(['jquery', 'bootstrap'], function ($) {

        'use strict';

        var $stepOne = $('#step_one'),
            $stepTwo = $('#step_two'),
            $allSteps = $('[id^="step_"]'),
            $link_Step_Two = $('#link_Step_Two'),
            $btnCancelStepTwo = $('#btn_cancel_step_two'),


        $link_Step_Two.on('click', function () {
            $allSteps.hide();
            $stepTwo.fadeIn();
        });

        $btnCancelStepTwo.on('click', function () {
            $allSteps.hide();
            $stepOne.fadeIn();
        });

    });
</script>
4

1 に答える 1

1

申し訳ありませんが、上記の Gnani の後にコメントを追加するだけのポイントがありません。jquery イベントが失われているだけの場合は、フォーム要素に対してjqueryデリゲート関数を使用します。デリゲートは、MS Ajax がリンクを再作成するときのように、将来存在する要素についても、セレクターに対してイベントを自動的にフックします。私はいつもこのトリックを使っています。何かのようなもの:

$("form").delegate('#link_Step_Two', 'click', function() {
  // Your code.
});

$("form").delegate('#btn_cancel_step_two', 'click', function() {
  // Your code.
});
于 2013-06-19T21:57:35.730 に答える