jQuery Modal qui apparaît sur le formulaire de soumission

J’ai ce code que je lance quand un utilisateur soumet un formulaire (c’est pour l’empêcher de soumettre à nouveau le formulaire ou de quitter la page et de lui faire savoir que le formulaire fait quelque chose)

var lastx = 0; var loadingAnim = setInterval(function () { UpdateSpinner("#loading", 128, 1536); }, 32); function UpdateSpinner(target, step, width) { $(target).css("background-position", lastx + "px 0px"); lastx = (lastx - step) % width; } var objModal = '
loading...
'; function ShowModal() { jQuery('body').append(objModal); } $('form').submit(function() { ShowModal(); });

Maintenant, tout fonctionne bien, sauf que lorsqu’un utilisateur essaie de soumettre un formulaire qui n’a pas été rempli correctement, j’utilise le plug-in jQuery Validation pour afficher des messages MAIS le modal apparaîtra toujours. Ma question est donc de savoir comment afficher le modal mais uniquement si AUCUNE erreur de validation n’est survenue?

Voici un exemple de mon code de validation:

 $(function() { $("#postform").validate({ rules: { post_title: "required", post_url: { required: { depends: function() { return $('input[name=post_category]:checked').val() == '14'; } }, url: true }, post_code: { required: { depends: function() { return $('input[name=post_category]:checked').val() == '13'; } } }, post_content: "required", post_tags: "required" }, messages: { post_title: "Your post MUST have a title", post_url: "Please enter a valid URL, don't forget the http://", post_code: "Please add your code", post_content: "Your post MUST have some content", post_tags: "Please add some tags" } }); }); 

Je pensais peut-être utiliser quelque chose comme ceci:

 function HideModal() { jQuery('body').remove(objModal); } 

qui pourrait être exécuté si les erreurs de validation s’exécutent? Ou y aurait-il une bien meilleure façon de faire cela? Merci.

    numberOfInvalids () devrait fonctionner:

     var $validator = {}; $(function() { $validator = $("#postform").validate({ // yada yada validate stuff }); }); function ShowModal() { jQuery('body').append(objModal); } function HideModal() { jQuery('body').remove(objModal); } $('form').submit(function() { if ($validator.numberOfInvalids() > 0) { HideModal(); } else { ShowModal(); } }); 

    Pas sûr que ce soit le bon ordre avec Hide / ShowModal (), vous devrez donc peut-être les changer. En outre, techniquement, vous ne cachez pas et ne montrez pas, mais vous ajoutez et supprimez.