Il n'y a pas de méthode opposée de event.preventDefault()
pour comprendre pourquoi, vous devez d'abord examiner ce que event.preventDefault()
fait quand vous l'appelez.
Sous le capot, la fonctionnalité de preventDefault consiste essentiellement à appeler un retour false qui arrête toute exécution ultérieure. Si vous êtes familier avec les anciennes méthodes de Javascript, il était autrefois de bon ton d'utiliser return false pour annuler les événements tels que les soumissions de formulaires et les boutons utilisant return true (avant même que jQuery n'existe).
Comme vous l'avez probablement déjà compris sur la base de l'explication simple ci-dessus : le contraire de event.preventDefault()
n'est rien. Vous n'empêchez simplement pas l'événement, par défaut le navigateur autorisera l'événement si vous ne l'empêchez pas.
Voir ci-dessous pour une explication :
;(function($, window, document, undefined)) {
$(function() {
// By default deny the submit
var allowSubmit = false;
$("#someform").on("submit", function(event) {
if (!allowSubmit) {
event.preventDefault();
// Your code logic in here (maybe form validation or something)
// Then you set allowSubmit to true so this code is bypassed
allowSubmit = true;
}
});
});
})(jQuery, window, document);
Dans le code ci-dessus, vous remarquerez que nous vérifions si allowSubmit est faux. Cela signifie que nous empêcherons notre formulaire de se soumettre à l'aide de la fonction event.preventDefault
puis nous ferons un peu de logique de validation et si nous sommes satisfaits, nous mettrons allowSubmit à true.
C'est vraiment la seule méthode efficace pour faire l'opposé de event.preventDefault()
- vous pouvez également essayer de supprimer les événements, ce qui revient au même.
3 votes
Je pense que, typiquement, votre fonction s'exécuterait et ensuite le comportement par défaut s'exécuterait, donc vous n'appelleriez jamais evt.preventDefault() en premier lieu.
0 votes
Pouvez-vous nous donner un exemple de ce que vous essayez de faire ?
1 votes
Duplicata possible : stackoverflow.com/questions/1551389/
0 votes
Avez-vous regardé cette question et cette réponse ? stackoverflow.com/questions/1164132/
2 votes
@Nobita - Je n'en suis pas si sûr... celui-là est spécifique à jQuery.
1 votes
Wow, merci pour les réponses rapides ! Mon problème est que ce n'est pas moi qui déclenche la fonction evt.preventDefault() ;. Je fais tourner une application flash tierce dans une lightbox. Lorsque je ferme la lightbox, la molette de ma souris pour le défilement de la page s'arrête. En faisant quelques recherches, j'ai découvert que cette application flash désactive le défilement de la page en raison d'une fonction de zoom. J'essaie donc maintenant de reprendre le défilement de la page une fois l'application fermée. Peut-être y a-t-il une méthode que je peux appeler pour reprendre l'événement de la roue de la souris ?
2 votes
Duplicata possible de Comment réactiver event.preventDefault ?
0 votes
En regardant ce lien, comment un CV pourrait-il défiler ?
$(document).unbind('sroll').scroll()
? Je ne suis pas trop sûr de ça.1 votes
Duplicata possible de Comment réactiver la fonction par défaut après avoir utilisé event.preventDefault() ? et Comment réactiver event.preventDefault ?
0 votes
Il s'agit d'une préoccupation valide - comment réactiver la valeur par défaut étant donné que cela a pu remonter dans le domaine à partir d'un autre code ?
0 votes
Essayez la solution mentionnée ici. Entrez la description du lien ici