2011-07-10 35 views
1

我使用jQuery驗證插件1.8.1.It的工作完全如預期,但是當我在一個對我的內容pages.Here我加入增加了一個更新面板中的問題開始jQuery驗證並更新面板一起

$(function() { 
    //Code that runs before update panel is fired. 

    //Listen for update panel 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
    //Re-initialize jquery after an auto post back. 
    function EndRequestHandler(sender, args) { 
     Validate(); 
    } 
}); 

在身旁我更新面板打電話給我的驗證方法,在這僅僅是加入這個更新面板寫在母版頁這樣

<script type="text/javascript"> 

    $().ready(function() { 

    Validate(); 

    }); 
    </script> 

    <script type="text/javascript"> 
    function Validate(); 
    { 
    var container = $('div.container'); 
// validate the form when it is submitted 
var validator = $("#form2").validate({ 
    errorContainer: container, 
    errorLabelContainer: $("ul", container), 
    wrapper: 'li', 
    meta: "validate"    
}); 
    } 
    </script>   

每部分後回來,我可以看到,當我按下提交按鈕的形式,它驗證並顯示幾乎2秒和t所需的信息母雞提交表格。 這是什麼解決方法?

回答

3

訂閱initializeRequest事件並檢查事件處理程序是否有效。如果不取消回發:

Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(instance_initializeRequest); 

function instance_initializeRequest(sender, args) { 
     if (!$("#form2").validate().form()) { 
      args.set_cancel(true); 
     } 
    } 
1

我不知道我得到了點,但IMO你應該放棄回發的驗證錯誤的情況下:通過將此代碼添加我的問題

Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequest); 

function InitializeRequest(sender, args) 
{ 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    if (! Validate()) { 
     prm.abortPostBack(); 
    }  
} 
0

這裏儘管有驗證錯誤已解決,但它引入了一個新的,現在通過選擇主下拉列表我的孩子下拉不填充我已經檢查了從目標方法後面的代碼來填充孩子下拉列表沒有觸發根本... ...。

<asp:UpdatePanel ID="updRole" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
    <script type="text/javascript" > 
     Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest (instance_initializeRequest); 
     function instance_initializeRequest(sender, args) { 
      if (!Validator()) 
      {     
       args.set_cancel(true); 
      } 
      } 
     </script> 
    </ContentTemplate> 
    </asp:UpdatePanel> 

這段代碼我在主頁,其中驗證器()函數中。就緒()事件燒製默認燒製但問題是通過在任何內容頁面添加更新面板方法燒成(驗證錯誤也會顯示2秒),但頁面已恢復。

<script type="text/javascript"> 
     $.validator.setDefaults({ 
     invalidHandler: function (form, validator) {  
    alert(「hi」); 
     } 
    }); 

    $().ready(function() { 
     Validator();   

    }); 

    function Validator() { 

     var container = $('div.container'); 
     // validate the form when it is submitted 
     var validator = $("#form1").validate({ 
      errorContainer: container, 
      errorLabelContainer: $("ul", container), 
      wrapper: 'li', 
      meta: "validate" 
     }); 
    }