2013-05-16 5 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" /> 

J'ai eu la recherche sur le web et créer une fonction pour utiliser la validation jQuery sur asp.net ajax UpdatePanel, si validate a échoué, le code de travail très bien, mais la question est, si toutes les conditions sont rencontrés, j'ai besoin de cliquer deux fois pour soumettre le formulaire, en raison de formIsValid onload est faux, et je ne sais pas comment résoudre ce problème, un guide pour résoudre le problème?Jquery Validation et UpdatePanel,

Répondre

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

Tout ce formIsValid stuff de champ caché est totalement inutile. Une méthode est déjà intégrée dans le plugin jQuery Validate appelé .valid() qui déclenche un test de validation et renvoie une valeur booléenne.

$(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); 
     } 
    } 

}); 

Sinon, vous pourriez peut-être en mesure d'utiliser simplement la fonction de rappel submitHandler pour exécuter votre fonction plus directement. (Étant donné que le submitHandler n'est tiré sur une forme valide, il facilite le test externe pour la validité semblent redondants dans ce cas.)

+0

merci pour l'info, mais le code ne fonctionne pas, mais vous aviez me donner un grand idée, je l'ai un peu modifié et ça fonctionne parfaitement, merci pour l'aide – Se0ng11

+0

le problème apparait à args.set_cancel (vrai), je modifie et affiche la réponse, je ne sais pas si c'est correct? Mais ça a marché pour moi – Se0ng11