2012-02-09 48 views
1

我在.net框架4.0中使用asp.net web窗体中的updatepanel。在之间,我实现了jQuery表单验证。它在表单验证方面效果很好,但是更新面板发生的问题无法进行部分回发,而是完全回发。感谢您的回复。jQuery表单验证和更新面板

我有这样的事情,在窗体上进行验证并在更新面板初始化请求时显示一些图像。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".logForm").validate(); 
     $('#main_UpdatePanelAccount').initializeRequest(function (options) { 
      $("#flashAcc").show(); 
      $("#flashAcc").fadeIn(400).html('<img src="/image/load.gif" align="absmiddle">'); 
     }); 
    }); 
</script> 

在此之后,我有这2块代码(一个评论和另一个与未注释),以确定是否回发。但是,这2个代码块也以更新面板完全回发结束。

<script type="text/javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(instance_initializeRequest); 
    function instance_initializeRequest(sender, args) { 
     if (!Validator()) { 
      args.set_cancel(true); 
     } 
    } 

// $(function() { 
//  Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
//  //Re-initialize jquery after an auto post back. 
//  function EndRequestHandler(sender, args) { 
//   //Do work after update panel fires. 
//   var prm = Sys.WebForms.PageRequestManager.getInstance(); 
//   if (!Validate()) { 
//    prm.abortPostBack(); 
//    args.set_cancel(true); 
//   } 
//   else { 
//    prm.add_beginRequest(); 
//    args.set_cancel(false); 
//   } 
//  } 
// }); 
</script> 

回答

2

首先,如果你的代码在updatepanel里面,它会在回发中被清除掉。与你的问题无关,只是一个附注。其次,除非将updatepanel设置为updatemode =“conditional”,否则它也将更新其他更新面板中的所有内容。如果你仍然整个页面刷新,我会尝试这样做,而不是:

<script type="text/javascript"> 
<!-- 
    function Post() { 
     __doPostBack('<%= UpdatePanel1.ClientID %>', ''); 
    } 
--> 
</script> 
+0

ya目前正确的模式位于更新面板之外的代码块:) – 2012-02-09 19:42:13