回发后,我的JavaScript函数不会;不能在ASP.NET中工作

本文关键字:不能 ASP NET 工作 我的 函数 JavaScript | 更新日期: 2023-09-27 18:27:49

我有一些通用函数,并将其折叠在Scripts文件夹中的CommonFunctions.js上。

我把它包括在我的主页上,并在我的页面上使用它。当我在页面上做任何帖子时,我的功能都不起作用。

我的CommonFunctions.js:

$(function () {
    gf();
    
   if (Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
        
        gf();
    }

 function gf(){
    $('.AddNewGeneralPanel').click(function () {
        if ($(this).find('.AddNewGeneralPanelStyle').text() == "") {
            $(this).find('.AddNewGeneralPanelStyle').text("(  Gizle  )");
            lastOpenId = $(this).attr("codeid");
        }
        else
            $(this).find('.AddNewGeneralPanelStyle').text("");
        $(this).next('.AddNewGeneralAccordionDiv').slideToggle('slow', function () {
        });
    });
  }
});

回发后,我的JavaScript函数不会;不能在ASP.NET中工作

这是因为updatepanel的部分回发。这是你需要做的。

function pageLoad(sender, args)
{
  $(document).ready(function(){   
   // put all your javascript functions here 
  });
}

我也遇到了同样的问题,这对我很有效。我希望这对你也有帮助。

由于您使用的是UpdatePanel,所以您将事件处理程序附加到的DOM部分将在回发后被删除并重新创建。这具有删除jQuery在首次加载页面时附加的任何事件处理程序的效果。

当您只回发页面的一部分时,jQuery $(function() {});不会再次激发,因此您的处理程序永远不会被重新附加。

这里有一个相关的问题,显示了如何在UpdatePanel刷新时重新订阅您的活动。

这是因为使用了updatepannel。以下代码运行良好。只需将您的jquery代码放入pageLoad事件中,如下面的

function pageLoad(sender, args) {
     $(document).ready(function () {....}
}

我也有同样的问题,我用这个代码解决了:

<script type="text/javascript">
    function pageLoad()
    {
        $('#datetimepicker2').datetimepicker();           
    }
</script>

面临同样的问题。更改

$(document).ready(function() {

Sys.Application.add_load(function() {

这将强制它即使在部分后发包上运行

假设您正在使用UpdatePanel进行回发,并且JS代码已附加到更新面板中的HTML元素,则在加载更新面板时需要再次附加它们。您可以在endRequest事件上挂接您的代码:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler)

http://msdn.microsoft.com/en-us/library/bb383810.aspx

请记住,如果您使用多个更新面板,则应检查刷新了哪个更新面板,并仅附加所需的事件,否则可能会引发多次事件。

我遇到了一个有趣的情况,我想我会在这里发布我的解决方案,以防将来对任何人都有帮助。

我的问题是我的OnClick事件在初始页面加载时启动,但在回发后没有。我的第二个问题是我的OnClick在最初的页面加载时被触发了一次,然后随着回发的进行越来越多。

<script type="text/javascript">
  // function that adds my various OnClick events
  function AddOnClicks() {
    $('.myClass').off("click.highlight"); // .off added so the event doesn't fire multiple times after postbacks
    $('.myClass').on("click.highlight", function () { // note: ".highlight" is just naming the event
        // ... on click logic
    });
  }
  $(document).ready(function () {
    AddOnClicks(); // this works for initial page load only
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () {
        AddOnClicks(); // this works after postback         
    });
  });
</script>

为什么我需要在回发时重新添加事件,同时删除前一个事件,我无法理解。希望这能帮助到某人:)

您可以将所有JavaScript代码放在以下代码之间。

函数pageLoad(sender,args){

}

相关文章: