Désactiver un bouton de soumission en cliquant dessus, empêchera le formulaire d'être soumis sur Google Chrome

J'ai ajouté le script suivant à ma vue de mise en page, dans mon mcc asp.net: –

$(document).ready(function () { $('.btn.btn-primary').click(function () { $(this).prop("disabled", true); if (!$('form').valid()) { $(this).prop("disabled", false); return false; } }); $('form').change(function () { $('.btn.btn-primary').prop("disabled", false); }); 

Le but de mon script est de désactiver les boutons de soumission et de les réactiver si le modèle n'est pas valide ou si l'utilisateur modifie une valeur de formulaire. Le script ci-dessus fonctionnera bien sur IE et Firefox, mais sur Chrome, je ne peux pas soumettre le formulaire, car lorsque l'utilisateur clique sur le bouton Soumettre, le bouton sera désactivé, mais le formulaire ne sera pas envoyé. Une idée de comment résoudre ce problème sur Chrome?

Au lieu de désactiver le bouton dans l'événement de clic du bouton – désactivez-le dans l'événement de soumission du formulaire (vous pouvez également vérifier le formulaire pour la validité).

De cette façon, il fonctionnera universellement dans tous les navigateurs.

 <form action="http://www.microsoft.com"> <input class="btn-primary" type="submit" value="submit"/> </form> $('form').submit(function() { $('input.btn-primary').prop("disabled", "disabled"); }) 

Je viens d'avoir le même problème que Google Chrome ne provoquait pas mon événement de soumission lorsque le bouton a été désactivé via jQuery .

Informations d'arrière-plan: J'ai un formulaire avec un bouton qui doit être désactivé chaque fois qu'il est cliqué. Le code de dépôt PHP n'est donc pas appelé plusieurs fois. Ce soumission est en cours d'exécution sur un Drupal Backend, dans mon cas comme un submit_hook personnalisé. Mais pour assurer le fonctionnement de tout autre CMS. Mais ce n'est pas le problème. Le vrai problème est que le code Javascript désactive le bouton et Google Chrome pense que le bouton est totalement mort et pas seulement désactivé. Donc, il ne déclenche plus de code.

Mais ce problème est assez facile à réparer.

Donc, ce code fonctionne sur Firefox / IE :

 (function($) { Drupal.behaviors.somebehaviour = { attach: function(context, settings) { $('#edit-submit').click(function (e) { $('#edit-submit').val('Is saved...'); $('#edit-submit').prop('disabled', 'disabled'); }); } }; })(jQuery); 

Et le faire fonctionner sur Chrome , vous devez ajouter la ligne:

 $(this).parents('form').submit(); 

Donc pour cet exemple, il serait enfin:

 (function($) { Drupal.behaviors.somebehaviour = { attach: function(context, settings) { $('#edit-submit').click(function (e) { $('#edit-submit').val('Is saved...'); $('#edit-submit').prop('disabled', 'disabled'); $(this).parents('form').submit(); }); } }; })(jQuery);