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 回答