2012-02-09 50 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