Drupal ne semble pas empêcher plusieurs soumissions de formulaires, même sur les pages de nœuds. Ce contrôle qualité suggère de le réparer côté serveur.
Comment pourrais-je désactiver le bouton soumettre après avoir cliqué?
D'autres solutions?
Drupal ne semble pas empêcher plusieurs soumissions de formulaires, même sur les pages de nœuds. Ce contrôle qualité suggère de le réparer côté serveur.
Comment pourrais-je désactiver le bouton soumettre après avoir cliqué?
D'autres solutions?
Réponses:
C'est seulement en dev mais le module Hide Submit ferait l'affaire. L'une des fonctionnalités est:
Je viens de l'installer sur un site de développement et cela semble bien fonctionner pour les formulaires d'ajout de nœuds; lorsque vous cliquez sur le bouton Soumettre, il est masqué et remplacé par une image de chargement et un message "Veuillez patienter ...", avant que le formulaire ne soit finalement soumis. Je ne l'ai pas essayé sur d'autres formes cependant.
la source
hook_form_alter()
- s'il l'utilisehook_form_FORMID_alter()
, passez-le en génériquehook_form_alter()
. Si elle est génériquehook_form_alter()
avec si à l' intérieur, ajouter un peu deor
« s dans ceif
.Voici la solution pour Drupal 7. Le code est une version simplifiée du module Hide Submit.
Ce code fonctionne bien même avec les boutons "Ajouter plus" et les formulaires AJAX.
la source
La façon la plus simple est de faire une solution javascript basée sur un thème pour désactiver le bouton après la soumission du formulaire. Dans le fichier theme.info, placez votre fichier javascript afin qu'il puisse être chargé par l'api du thème.
Maintenant, dans le nom-script.js, ajoutez à la section Drupal.behaviors.themename pour ressembler à ceci:
Le flux est donc le suivant:
Je suis sûr que s'il y a un traitement ajax, ce qui précède pourrait être dangereux et la soumission du formulaire ne pourrait jamais être refaite si une erreur est détectée dans la validation form_api alors testez-le et personnalisez-le pour répondre à vos besoins. J'ai désactivé les deux boutons car vous pouviez toujours cliquer sur le bouton d'aperçu alors que le bouton d'envoi était désactivé. Évidemment, votre kilométrage peut varier.
la source
Drupal.behaviors
style de déclaration; cela ne fonctionnera pas pour Drupal 7. Ce devrait être le casDrupal.behaviors.themename = { attach: function (context, settings) { // ...
. Voir Gestion de JavaScript dans Drupal 7 pour plus d'informations