0

ページにこのスクリプトがあります

<script type="text/javascript">
        $(document).ready(function () {
            var btnApplyVoucher = document.getElementById('LbtnApplyVoucher');
            var voucher = document.getElementById('TxtVoucher');
            $("input.voucherCode").bind('keyup paste', function () {
                btnApplyVoucher.setAttribute("class", "displayBlack");
            });
            $("input.voucherCode").bind('blur', function () {
                if (voucher.value == '') {
                    btnApplyVoucher.removeAttribute("class", "displayBlack");
                }
            });
        });
</script>

上記のjqueryによって操作されているこのテキストボックスがあります

<asp:UpdatePanel ID="UpdBasket" runat="server">
...
<asp:TextBox ID="TxtVoucher" Text="" runat="server" CssClass="voucherCode" ClientIDMode="Static"/>
...
<asp:LinkButton ID="LbtnUpdateBasket" runat="server" Text="Update Basket" OnClick="LbtnUpdateBasket_Click"/></div>
...
</asp:UpdatePanel>

私の問題は、LbtnUpdateBasket がクリックされ、更新パネルが更新され、jquery が機能しなくなることです。ここで何ができるかわかりませんが、ウェブ上で見つけられるものは本当に役に立ちませんか? 私の問題は.ready()、ページの読み込み時に実行されているものと関係があると思いますが、もちろん、ページ全体が読み込まれないため、これは更新時に実行されません。ここで何ができますか?

4

2 に答える 2

2

更新パネルが更新されたとき、およびページが読み込まれたときにも jQuery を起動する必要があります。

例えば:

    <script type="text/javascript">

        //Get page request manager
        var prm = Sys.WebForms.PageRequestManager.getInstance();

        //Add handler for end request (update panel, end update)
        prm.add_endRequest(configurePage);

        $(document).ready(configurePage);

        function configurePage() {
            var btnApplyVoucher = document.getElementById('LbtnApplyVoucher');
            var voucher = document.getElementById('TxtVoucher');
            $("input.voucherCode").bind('keyup paste', function () {
                btnApplyVoucher.setAttribute("class", "displayBlack");
            });
            $("input.voucherCode").bind('blur', function () {
                if (voucher.value == '') {
                    btnApplyVoucher.removeAttribute("class", "displayBlack");
                }
            });
        }

</script>
于 2013-09-26T15:58:22.643 に答える
1

ボタンをクリックすると、AJAX 要求が送信されUpdatePanel、その要求の結果に基づいて の HTML コンテンツ全体が再作成されます。その後、JQuery コードで行ったすべての変更を再適用する必要があります。これらの JQuery バインディングを再適用するための適切なコードが、リンク ボタンのクリック ハンドラーが起動されたときに実行されるようにする必要があります。

于 2013-09-26T15:58:39.383 に答える