注册jquery页面加载和随后的ajax发回



使用应该在第一个页面加载和随后的Ajax返回时注册的JQuery。这个被应用的控件在更新面板中。现在我在做什么

document.readysys.application.add.load中注册相同的函数,因此它适用于更新面板内的控件和更新面板外的控件。

$(document).ready(function () {
    CheckMaxlength();
    //If Text area is placed inside update panel then apply restriction for texarea size.
    Sys.Application.add_load(function () {
    CheckMaxlength();
    });
});

我想知道在更新面板内部和更新面板外部的控件的确切工作方式

我不确定你想做什么,但我怀疑委派事件可能是你的答案。

委派事件的优点是,它们可以处理来自后代元素的事件,这些事件将在以后添加到文档中。通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委托事件来避免频繁地附加和删除事件处理程序。

例如,您可以向所有文本区域添加功能,而不管它们何时使用

添加到页面中。
$( "body" ).on( "click", "textarea", function() {
    alert( $( this ).val() );
});

对于您的情况的第一个好处是,在任何时候添加到更新面板的任何文本区域都将获得委托功能。

此外,如果你想针对更新面板内和更新面板外的文本的不同行为,你也可以这样做。

$("body").on('click', 'textarea', function () {
    alert( "outside" + $(this).val());
});
$(".update-panel").on('click', 'textarea', function () {
    alert("inside: " +  $(this).val());
    //stop the event from propagating up to the body
    event.stopPropagation(); 
});

另外,请注意,在运行此代码时,只需要准备好bodyupload-container。它不需要文本区在那里,所以你不需要在Sys.Application.add_load中运行这个。

当在UpdatePanel中使用控件时,您将需要使用ASP。. NET AJAX ClientScripts和事件,如Sys.Application。为加载事件监听器添加_load。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function () {
            console.log('$(document).ready()');
        })
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <script>
            function CheckMaxlength() {
                console.log('Sys.Application.add_load()');
                // Sys.Application.remove_load(pageLoadHandler);  
            }
            Sys.Application.add_load(CheckMaxlength);
        </script>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Button ID="Button1" runat="server" Text="PostBack" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </form>
</body>
</html>

系统。应用程序是由ScriptManager加载的,只有在ScriptManager准备好并加载了所有脚本后才能使用它。

使用UpdatePanel更新的内容由ScriptManager负责。它在每次更新后引发Sys.Application.add_load()客户端事件,请参阅AJAX客户端生命周期事件

Window: load事件和jQuery .ready()只会在HTML DOM准备好时触发。例如,第一次加载的页面。ASP。. NET AJAX更新不重新加载文档,它们只更新UpdatePanel中的内容。

如果你使用了突变观察者,你可能能够检测到DOM中的变化,即使使用UpdatePanels更新内容。