2011-05-31 52 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