2013-05-16 28 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