2013-05-16 29 views
0
 $(document).ready(function() { 
     $("#formIsValid").val("false"); 
     $('#form1').validate({ 
      rules: { 
       <%= CmyCd.UniqueID %>: { required:true }, 
       <%= CmyName.UniqueID %>: { required:true }, 
      }, 
      messages: { 
      },highlight: function(element, errorClass) { 
       $(element).addClass("redBorder"); 
      }, 
      unhighlight: function(element, errorClass) { 
       $(element).removeClass("redBorder"); 
      }, 
      submitHandler: function(form){ 
       $("#formIsValid").val("true"); 
      } 
     }); 

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

     function CheckValidationStatus(sender, args) { 
      if($("#formIsValid").val() == "false") { 
       args.set_cancel(true); 
      } 
     } 
    }); 

<input type="hidden" name="formIsValid" id="formIsValid" value="false" /> 

我不得不通過網絡搜索和創建使用jQuery驗證在asp.net AJAX的UpdatePanel的功能,如果驗證失敗,代碼工作正常,但問題是,如果所有的條件我需要點擊兩次實際提交表單,由於formIsValid onload是錯誤的,我不知道如何真正解決這個問題,任何指南來解決這個問題?jQuery驗證和UpdatePanel的,

回答

0
 $(document).ready(function() { 
     $('#form1').validate({ 
      rules: { 
       <%= CmyCd.UniqueID %>: { required:true }, 
       <%= CmyName.UniqueID %>: { required:true }, 
      }, 
      messages: { 
      },highlight: function(element, errorClass) { 
       $(element).addClass("redBorder"); 
      }, 
      unhighlight: function(element, errorClass) { 
       $(element).removeClass("redBorder"); 
      }, 
     }); 

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

     function CheckValidationStatus(sender, args) { 
      if ($('#form1').valid()) { 
       args.set_cancel(false); 
      } else{ 
       args.set_cancel(true); 
      } 
     } 
1

這一切formIsValid隱藏字段的東西是完全不必要的。 jQuery Validate插件中已經有一個名爲.valid()的方法,它觸發了一個驗證測試並返回一個布爾值。

$(document).ready(function() { 

    $('#form1').validate({ 
     rules: { 
      <%= CmyCd.UniqueID %>: { required:true }, 
      <%= CmyName.UniqueID %>: { required:true }, 
     }, 
     messages: { 
     }, 
     highlight: function(element, errorClass) { 
      $(element).addClass("redBorder"); 
     }, 
     unhighlight: function(element, errorClass) { 
      $(element).removeClass("redBorder"); 
     } 
    }); 

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

    function CheckValidationStatus(sender, args) { 
     if ($('#form1').valid()) { 
      args.set_cancel(true); 
     } 
    } 

}); 

或者,你有可能可以只使用submitHandler回調函數來更直接地運行功能。 (由於submitHandler在這種情況下,僅啓動一個有效的形式,它使外部有效性測試似乎是多餘的。)

+0

感謝您的信息,但代碼是不工作的,但你必須給我一個很大的的想法,我修改了一下,它的工作完美,謝謝你的幫助 – Se0ng11

+0

問題出現在args.set_cancel(true),我修改併發布答案,不知道它是否正確?但它爲我工作 – Se0ng11