Jquery脚本在一个页面上什么都不做,而在另一个页面上什

时间:2012-08-27 22:32:13

标签: jquery asp.net web webpage

我有一个JQuery脚本,我是从一个有外页的人那里得到的。

$(function () {
    var $txt = $('input[id$=TextBoxFiltroProv]');
    var $ddl = $('select[id$=DropDownListProv]');
    var $items = $('select[id$=DropDownListProv] option');

    $txt.keyup(function () {
        searchDdl($txt.val());
    });

    function searchDdl(item) {
        $ddl.empty();
        var exp = new RegExp(item, "i");
        var arr = $.grep($items,
                function (n) {
                    return exp.test($(n).text());
                });

        if (arr.length > 0) {
            countItemsFound(arr.length);
            $.each(arr, function () {
                $ddl.append(this);
                $ddl.get(0).selectedIndex = 0;
            }
                );
        }
        else {
            countItemsFound(arr.length);
            $ddl.append("<option>No Items Found</option>");
        }
    }

    function countItemsFound(num) {
        $("#para").empty();
        if ($txt.val().length) {
            $("#para").html(num + " items found");
        }
    }
});

它适用于已经呈现所有内容的页面(HTML控件),并且在更新面板中包含一些元素。但在另一页上,我有2个更新面板和一个面板(它开始隐藏)。控件位于ASP.net面板内。 ¿是否隐藏了控件的问题?在那种情况下¿当面板可见并且其控件已经呈现时,如何告诉JQuery启动这段代码?我想我错过了一些东西,但我看不到它。感谢。

2 个答案:

答案 0 :(得分:1)

如果在更新面板中动态添加元素,则必须设置委托以绑定到事件。这样,当动态添加元素时,jquery将确保将事件绑定为声明的。

以下示例document我希望将具有给定选择器input[id$=TextBoxFiltroProv]的任何元素绑定到现有keyup的{​​{1}} eventonloaddocument之后添加到DOM。

示例:

ready

答案 1 :(得分:0)

我已经解决了这个问题,这是因为updatepanels,我添加了以下代码,用一个名为BindEvents的函数包围我的主代码,在更新面板中我添加了这个脚本:

 <asp:UpdatePanel...>
<ContentTemplate>
     <script type="text/javascript">
                    Sys.Application.add_load(BindEvents);
     </script>
</ContentTemplate>
    </asp:UpdatePanel>