首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UpdatePanel异步回发后的Javascript事件订阅

UpdatePanel异步回发后的Javascript事件订阅
EN

Stack Overflow用户
提问于 2011-05-31 21:08:12
回答 2查看 4.4K关注 0票数 5

在asp.net页面上异步回发之后,我有一个jquery事件处理程序的问题。我读过this topic --这是一个很好的解决方案,但我需要一个单独的函数。所以我使用的是jquery masked plugin

我现在的js代码是:

代码语言:javascript
运行
复制
<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>

正如您所看到的,mask被初始化了2次:在文档就绪()和异步回发之后(在endRequest())。但是在异步回发之后,掩码插件不会被映射。

有人理解这个问题吗?如果您能帮忙,我将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-01 18:18:53

我想说谢谢Aristos的帮助和正确的方向!在你的代码中,我只修复了这个字符串:

代码语言:javascript
运行
复制
jQuery(document).ready(Init);//direct transfer function not work;

因此,最终的代码如下所示:

代码语言:javascript
运行
复制
<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>
票数 -1
EN

Stack Overflow用户

发布于 2011-05-31 21:14:15

代码中的问题是jQuery (文档).ready不是在更新面板之后运行的,因此您需要在jQuery之外生成endRequest。

尝试这样做:

代码语言:javascript
运行
复制
<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>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6188050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档