83 votes

Comment réactiver event.preventDefault?

J'ai une page Web sur laquelle j'ai empêché l'action par défaut sur tous les boutons de soumission. Toutefois, j'aimerais réactiver l'action de soumission par défaut sur un bouton. Comment puis-je procéder?

J'empêche actuellement l'action par défaut en utilisant les éléments suivants:

 $("form").bind("submit", function(e){
e.preventDefault();
});
 

J'ai réussi à faire cela en utilisant ce qui suit:

 $(document).ready(function(){
$("form:not('#press')").bind("submit", function(e){
e.preventDefault();
});
 

Mais puis-je le faire dynamiquement lorsque le bouton est cliqué?

125voto

redsquare Points 47518

Vous devez alors dissocier l'événement et relier l'un à l'autre en un événement distinct qui n'empêche pas Par défaut, ou simplement appeler l'événement par défaut vous-même plus tard dans la méthode après la suppression de la liaison. Il n'y a pas d'événement magique. Annulé = faux;

Comme demandé

  $('form').submit( function(ev){

         ev.preventDefault();

         //later you decide you want to submit
         $(this).unbind('submit').submit()

  });
 

13voto

Patrice Neff Points 766

Soit vous faites ce que redsquare propose avec ce code:

 function preventDefault(e) {
    e.preventDefault();
}
$("form").bind("submit", preventDefault);

// later, now switching back
$("form#foo").unbind("submit", preventDefault);
 

Ou vous affectez un attribut de formulaire chaque fois que la soumission est autorisée. Quelque chose comme ça:

 function preventDefault(e) {
    if (event.currentTarget.allowDefault) {
        return;
    }
    e.preventDefault();
}
$("form").bind("submit", preventDefault);

// later, now allowing submissions on the form
$("form#foo").get(0).allowDefault = true;
 

6voto

foxybagga Points 1345
 function(e){ e.preventDefault();
 

et son contraire

 function(e){ return true; }
 

à votre santé!

2voto

adardesign Points 6182
$('form').submit( function(ev){

     e.preventDefault();

     //later you decide you want to submit
     $(this).trigger('submit');     or     $(this).trigger('anyEvent');

-3voto

user3521417 Points 11

Vous pouvez réactiver les actions en ajoutant

 this.delegateEvents();  // Re-activates the events for all the buttons
 

Si vous l'ajoutez à la fonction de rendu d'une vue JS du circuit principal, vous pouvez utiliser event.preventDefault () selon vos besoins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X