172 votes

Comment déclencher un événement après avoir utilisé event.preventDefault()

Je veux organiser un événement jusqu'à ce que je sois prêt à le déclencher, par exemple

 $('.button').live('click', function(e){

   e.preventDefault(); 

   // do lots of stuff

   e.run() //this proceeds with the normal event    

}

Existe-t-il un équivalent à la fonction run() décrite ci-dessus ?

19voto

Rafael Oliveira Points 576

Vous pouvez faire quelque chose comme

 $(this).unbind('click').click();

18voto

Tomislav Simić Points 187

Remplacez la propriété isDefaultPrevented comme ceci :

 $('a').click(function(evt){
  evt.preventDefault();

  // in async handler (ajax/timer) do these actions:
  setTimeout(function(){
    // override prevented flag to prevent jquery from discarding event
    evt.isDefaultPrevented = function(){ return false; }
    // retrigger with the exactly same event data
    $(this).trigger(evt);
  }, 1000);
}

À mon humble avis, c'est le moyen le plus complet de redéclencher l'événement avec exactement les mêmes données.

8voto

Salvis Blūzma Points 334

Il est possible d'utiliser currentTarget des event . L'exemple montre comment procéder avec la soumission du formulaire. De même, vous pouvez obtenir une fonction à partir de l'attribut onclick etc.

 $('form').on('submit', function(event) {
  event.preventDefault();

  // code

  event.currentTarget.submit();
});

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