簡體   English   中英

回發后,我的 JavaScript 函數在 ASP.NET 中不起作用

[英]After postback my JavaScript function doesn't work in ASP.NET

我有通用函數,我將它CommonFunctions.js在 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 () {

        });

    });
  }
});

這是因為更新面板部分回發。 這是您需要做的。

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

請記住,如果您使用多個更新面板,您應該檢查哪個更新面板被刷新並僅附加需要的事件,否則您可能會冒事件觸發多次的風險。

您可以將所有 JavaScript 代碼放在以下代碼之間。

函數 pageLoad(sender, args) {

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM