JQuery在更新面板

时间:2017-01-23 15:33:43

标签: javascript c# jquery .net updatepanel

我在页面上有两个组合框和一个gridview,更改组合框中的值会更改gridview中显示的数据。

我还有一个文本框,用于使用以下脚本过滤gridview中的数据:

$(document).ready(function () {
    (function ($) {
        $('#filter').keyup(function () {
            var rex = new RegExp($(this).val(), 'i');
            $('.searchable tr').hide();
            $('.searchable tr').filter(function () {
                return rex.test($(this).text());
            }).show();
        })
    } (jQuery));
});

这一切都正常,但是当用户更改组合框中的值时会发生回发以刷新表数据并且屏幕在刷新时会闪烁,这是不可取的

我已将控件包装在更新面板中,并包含一个脚本管理器。

<asp:ScriptManager ID="SM_Items" runat="server">
</asp:ScriptManager>

<asp:UpdatePanel ID="UP_Items" runat="server">
    <ContentTemplate>

        //Controls in here

    </ContentTemplate>
</asp:UpdatePanel>

这已停止页面闪烁并且表格仍在填充,但更新面板内的过滤器文本框不再有效。

我已尝试在更新面板中移动脚本,但这没有任何区别。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我认为这是因为您的过滤器事件在使用更新面板异步重新加载之前已注册到过滤器文本框中。使用.keyup直接注册到#filter是一次性事件。如果文本框被删除或再次添加,则不会附加事件处理程序。

$('body').on('keyup', '#filter', function () {

});