2011-05-31 51 views
4

我在asp.net頁面上的異步回發之後發生jquery事件處理程序的問題。 我讀this topic - 這是一個很好的解決方案,但我需要一個單獨的功能。 所以我使用jquery masked pluginUpdatePanel異步回傳後的Javascript事件訂閱

我的js代碼現在是:

<script type="text/javascript"> 

jQuery(document).ready(function() { 
    var control = $("#txtCustomerPhone"); 

    InitPhonePattern(this, control); 

    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_endRequest(InitPhonePattern(this, control)); 
}); 

function InitPhonePattern(sender, args) { 
    $(args[0]).mask("+7 (999) 999-99-99", { completed: 
    function() { 
    $('#btnCheckCustomerPhone').click();} 
    }); 

} 
</script> 

正如你看到的面具被初始化2次:在文件準備就緒()和異步回發後(上endRequest())。但是在異步回發之後,掩碼插件未映射。

有人理解問題?我會很感激的幫助!

回答

-1

我想這麼說感謝Aristos幫助和正確的方向! 在你的代碼中,我只固定字符串:

jQuery(document).ready(Init);//direct transfer function not work; 

所以最終的代碼如下所示:

<script type="text/javascript"> 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_endRequest(EndRequest); 

    function EndRequest(sender, args) { 
     Init(); 
    } 

    $(document).ready(function() { 
     Init(); 
    }); 

    function Init() { 
     var control = $('#txtCustomerPhone'); 
     InitPhonePattern(control); 
    } 

    function InitPhonePattern(args) { 
     $(args).mask("+7 (999) 999-99-99", { completed: 
      function() { 
       $('#btnCheckCustomerPhone').click(); 
      } 
     }); 
    } 

</script> 
5

你的代碼中的問題是jQuery(document).ready沒有在更新面板之後運行,所以你需要讓你的endRequest離開jQuery。

試試這個方法:

<script type="text/javascript"> 
     var prm = Sys.WebForms.PageRequestManager.getInstance();  
     prm.add_initializeRequest(InitializeRequest); 
     prm.add_endRequest(EndRequest); 

     function InitializeRequest(sender, args) {  
     } 

     function EndRequest(sender, args) { 
      Init(); 
     } 

     jQuery(document).ready(function(){Init();}); 

     function Init() 
     { 
      var control = $("#txtCustomerPhone"); 
      InitPhonePattern(control);   
     } 

     function InitPhonePattern(args) { 
      $(args[0]).mask("+7 (999) 999-99-99", { completed: 
      function() { 
       $('#btnCheckCustomerPhone').click();} 
      }); 
     } 
</script> 
+0

Aristos的,謝謝你 - 但現在我有以下客戶端錯誤:「SYS是未定義」 – Mikka 2011-05-31 16:15:56

+0

oops,因爲使用上面的Sys.WebForms.PageRequestManager它必須放置ScriptManager - 我在我的問題中修復了代碼 – Mikka 2011-05-31 16:27:17