--- title: event.preventDefault slug: Web/API/Event/preventDefault tags: - API - DOM - Evènement - Gecko - Méthodes translation_of: Web/API/Event/preventDefault ---
{{ ApiRef("DOM") }}
 

La méthode  preventDefault() de l 'interface {{domxref("Event")}} indique à l'{{Glossary("user agent","agent utilisateur")}} que si l'événement n'est pas traité explicitement, son action par défaut ne doit pas être prise en compte comme elle le serait normalement. L'événement continue à se propager comme d'habitude, sauf si l'un de ses écouteurs appelle {{domxref("Event.stopPropagation", "stopPropagation()")}} ou {{domxref("Event.stopImmediatePropagation", "stopImmediatePropagation()")}} , dont l'un ou l'autre termine la propagation.

Syntaxe

Event.preventDefault();

Paramètres

None (aucun)

Valeur retournée

undefined.

Exemples

Bloquer la gestion des clics par défaut

L'action par défaut du clic sur une case à cocher est le changement de son état. Cet exemple montre comment annuler cette action :

JavaScript

document.querySelector("#id-checkbox").addEventListener("click", function(event) {
         document.getElementById("output-box").innerHTML += "Sorry! <code>preventDefault()</code> won't let you check this!<br>";
         event.preventDefault();
}, false);

HTML

<p>Please click on the checkbox control.</p>

<form>
  <label for="id-checkbox">Checkbox:</label>
  <input type="checkbox" id="id-checkbox"/>
</form>

<div id="output-box"></div>

Résultat

Vous pouvez voir preventDefault en action ici (anglais) :

{{EmbedLiveSample("Blocking_default_click_handling")}}

Arrêter les frappes de touches pour atteindre un champ d'édition

L'exemple suivant montre comment bloquer la saisie de texte invalide dans un champ input avec preventDefault()Actuellement, vous devriez normalement utiliser la validation de forme HTML native à la place.

HTML

Ici le formulaire :

<div class="container">
  <p>Please enter your name using lowercase letters only.</p>

  <form>
    <input type="text" id="my-textbox">
  </form>
</div>

CSS

Nous utilisons un peu de CSS pour la boîte d'avertissement qui sera dessinée lorsque l'utilisateur appuie sur une touche non valide :

.warning {
  border: 2px solid #f39389;
  border-radius: 2px;
  padding: 10px;
  position: absolute;
  background-color: #fbd8d4;
  color: #3b3c40;
}

JavaScript

Et voici le code JavaScript qui fait le travail. Tout d'abord, écoutez les événements {{event("keypress")}}:

var myTextbox = document.getElementById('my-textbox');
myTextbox.addEventListener('keypress', checkName, false);

La fonction checkName(), qui regarde la touche enfoncée et décide de l'autoriser :

function checkName(evt) {
  var charCode = evt.charCode;
  if (charCode != 0) {
    if (charCode < 97 || charCode > 122) {
      evt.preventDefault();
      displayWarning(
        "Please use lowercase letters only."
        + "\n" + "charCode: " + charCode + "\n"
      );
    }
  }
}

La fonction displayWarning()  présente une notification d'un problème. Ce n'est pas une fonction élégante mais elle fait le travail nécessaire à cet exemple :

var warningTimeout;
var warningBox= document.createElement("div");
warningBox.className = "warning";

function displayWarning(msg) {
  warningBox.innerHTML = msg;

  if (warningBox) {
    window.clearTimeout(warningTimeout);
  } else {
    myTextbox.parentNode.insertBefore(warningBox, myTextbox);
  }

  warningTimeout = window.setTimeout(function() {
      warningBox.parentNode.removeChild(warningBox);
      warningTimeout = -1;
    }, 2000);
}

Résultat

Ici le résultat du code précédent :

{{ EmbedLiveSample('Stopping_keystrokes_from_reaching_an_edit_field', 600, 200) }}

Notes

Appeler preventDefault pendant chaque étape de la propagation de l'évènement annule celui-ci, ce qui signifie que chaque action par défaut se produisant normalement ne se produira pas.

Note : Depuis {{Gecko("6.0")}}, appeler preventDefault() passe la valeur de la propriété {{domxref("event.defaultPrevented")}} à true.

Vous pouvez utiliser {{domxref("Event.cancelable")}} pour vérifier que l'évènement peut être annulé. Appeler preventDefault sur un évènement qui ne peut pas être annulé n'a aucun effet.

Spécification

Spécification Statut Commentaire
{{SpecName('DOM WHATWG', '#dom-event-preventdefault', 'Event.preventDefault()')}} {{ Spec2('DOM WHATWG') }}  
{{SpecName('DOM2 Events', '#Events-Event-preventDefault', 'Event.preventDefault()')}} {{ Spec2('DOM2 Events') }} Définition initiale.

Compatibilité des navigateurs

{{Compat("api.Event.preventDefault")}}