web-dev-qa-db-fra.com

Comment empêcher la soumission d'un formulaire Ajax

Le code ci-dessous bloque la soumission de tout formulaire non ajax.

$(this.form)
  .on('submit', function(event) {
    if (/* Some condition */) {
      event.preventDefault();
    }
  });

Dans Drupal 8, comment pouvons-nous bloquer la soumission d'un formulaire Ajax?

Les formulaires Ajax ne déclenchent pas de gestionnaire de soumission de formulaire et je n'ai pas pu bloquer l'événement de clic sur les boutons de soumission d'un formulaire Ajaxified.

Pour référence, j'essaie de corriger problème # 3010084: la soumission du formulaire se termine avant la fin du téléchargement du fichier

8
jrockowitz

J'ai trouvé la solution ici .

// Add submit handler to form.beforeSend.
// Update Drupal.Ajax.prototype.beforeSend only once.
if (typeof Drupal.Ajax !== 'undefined' && typeof Drupal.Ajax.prototype.beforeSubmitOriginal === 'undefined') {
  Drupal.Ajax.prototype.beforeSubmitOriginal = Drupal.Ajax.prototype.beforeSubmit;
  Drupal.Ajax.prototype.beforeSubmit = function (form_values, element_settings, options) {
    if (/* Custom condition */) {
      this.ajaxing = false;
      return false;
    }
    return this.beforeSubmitOriginal();
  };
}
13
jrockowitz