Détecter le formulaire sous forme annulée avec Javascript

Je travaille sur un projet Web qui comporte beaucoup d’abstraction – beaucoup de code est inséré dans les modèles d’affichage, les bibliothèques JavaScript internes à l’entreprise, etc.

On m’a demandé de “détourner” les boutons de soumission de formulaire pour les désactiver lors de la soumission du formulaire, afin d’interdire les clics supplémentaires. Le problème est que je dois toujours envoyer le bouton car il est utilisé dans 99% de notre système en tant que saisie de formulaire (ce n’est pas une bonne pratique, mais je n’ai pas écrit ce code!)

Ce que j’ai fait est que lorsque l’utilisateur clique sur “Enregistrer”, ce bouton est masqué à l’aide de jQuery et un duplicata exact désactivé avec une icône en forme de cône est mis à sa place:

function showSpinningButton(button){ $(button).hide(); clone = $(button).clone(); clone.prop('disabled', true); $(button).parent().append(clone); clone.show(); } 

Cela fonctionne dans le cas d’utilisation standard, mais le cas spécifique est la validation – il m’est impossible de détecter si le formulaire est invalide et si le bouton doit être réinitialisé. Ceci est particulièrement gênant car toute la validation est effectuée dans des bibliothèques Javascript externes que je ne suis pas autorisé à modifier.

L’essentiel est le suivant: existe-t-il un événement DOM déclenché lorsqu’un formulaire soumis a été annulé (c’est-à-dire onclick = “return false;”) auquel un gestionnaire pourrait être associé pour réinitialiser le bouton?

Vous pouvez utiliser un wrapper sur la fonction de validation:

 var oldHandler = form.prop("onsubmit"); form.removeProp("onsubmit").submit(function(e) { var result = oldHandler.call(this, e); if (result == false) { // reset your button } return result; });