2010-05-07 5 views
8

Je souhaite désactiver le bouton Soumettre lorsqu'un utilisateur soumet le formulaire afin qu'il ne puisse pas cliquer deux fois sur le bouton Soumettre.Comment désactiver le bouton Soumettre lorsque le formulaire est soumis sans erreur

Je le javascript suivant codé dans ma page

 

$(document).ready(function(){ 
    $("form").submit(function(){ 
     $("form").find('input[type=submit]').attr('disabled', 'disabled'); 
    }); 
}) 
 

Cela fonctionne très bien. Mais quand j'ai appliqué la bibliothèque validate jquery et apposé le code suivant

 

$(document).ready(function(){ 
    $("form").submit(function(){ 
     $("form").find('input[type=submit]').attr('disabled', 'disabled'); 
    }); 

    $("form").validate({ 
      errorClass: "jqueryError", 
      errorElement: 'label', 
      success: 'jqueryValid', 
      messages: { 
       TopicCategory: { 
        required: 'Please choose a category for topic.' 
       }, 
       TopicSubcategoryId: { 
        required: 'Please choose a subcategory for topic.' 
       }, 
       TopicTitle: { 
        required: 'Please enter a title for topic.' 
       } 
      } 
     }); 
}) 
 

Le bouton d'envoi ne fonctionnait plus après avoir soumis la forme même s'il y a des entrées incomplètes dans le site (c.-à-forme avec des erreurs et l'utilisateur est invité à les remplir correctement). Lorsque l'utilisateur remplit le formulaire en corrigeant toutes les erreurs, le bouton d'envoi est désactivé.

Comment puis-je d'abord vérifier s'il n'y a pas d'erreurs dans le formulaire, puis désactiver le bouton Soumettre et ensuite le soumettre définitivement.

Merci

Répondre

7

Ajoutez le paramètre suivant à jQuery Validation:

submitHandler: function(form) { 
    $(':submit', form).attr('disabled', 'disabled'); 
    form.submit(); 
} 
+1

Merci, cela a fonctionné parfaitement. Pouvez-vous expliquer la deuxième ligne de code s'il vous plaît. Est-ce égal à $ ("form"). Find ("input [type = submit]"). Attr ("désactivé", "désactivé"); ? lequel est le plus rapide? –

+0

La mienne est probablement un peu plus rapide. J'utilise [le sélecteur '' submit'] (http://api.jquery.com/submit-selector/), et la variante de la fonction '$' qui prend un élément pour la recherche. – SLaks

+0

merci encore de fournir le lien et une réponse rapide :-) –

-1

Je n'ai pas encore démarré avec jQuery. Mais je pense, vous pouvez faire quelque chose comme ceci:

$(document).ready(function(){ 
    $("form").submit(function(){ 
    }); 

    $("form").validate({ 
      errorClass: "jqueryError", 
      errorElement: 'label', 
      success: 'jqueryValid', 
      messages: { 
       TopicCategory: { 
        required: 'Please choose a category for topic.' 
       }, 
       TopicSubcategoryId: { 
        required: 'Please choose a subcategory for topic.' 
       }, 
       TopicTitle: { 
        required: 'Please enter a title for topic.' 
       } 
      } 
     $("form").find('input[type=submit]').attr('disabled', 'disabled'); 

     }); 
}) 
+0

Ceci est une syntaxe incorrecte et ne fonctionnera pas du tout. – SLaks

+0

Vous avez inséré une déclaration dans une déclaration d'objet JSON, qui va casser la méthode de validation, faites attention :) – mamoo

+0

:-) merci de m'avoir épargné du temps pour essayer de résoudre mon problème mais cela ne marchera jamais. –

1

Je n'ai pas utilisé le plug-in validateur jquery, mais la lecture des documents ici

http://docs.jquery.com/Plugins/Validation/validate

vous pourriez

1) DISA ble sur le bouton dans le rappel de submitHandler

2) laisser votre code de désactivation existant, mais réactiver le bouton dans le rappel invalidHandler

Questions connexes