Панель обновления мешает работать jquery?

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() которая запускается при загрузке страницы, но, конечно, это не будет работать при обновлении, поскольку вся страница загружается, что я могу здесь сделать?

Теги:
webforms

2 ответа

1
Лучший ответ

Необходимо также запустить 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>
1

Когда вы нажимаете кнопку, отправляется запрос AJAX, а затем весь HTML-контент UpdatePanel воссоздается на основе результатов этого запроса. Все изменения, внесенные вашим кодом JQuery, затем должны быть повторно применены. Вам нужно будет убедиться, что соответствующий код для повторного применения этих привязок JQuery запускается независимо от того, у кого запущен ваш обработчик щелчка кнопки ссылки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню