Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Element : évènement beforeinput

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis mars 2021.

L'évènement DOM beforeinput se déclenche lorsque la valeur d'un élément <input> ou <textarea> est sur le point d'être modifiée. Mais contrairement à l'évènement input, il ne se déclenche pas sur l'élément <select>. L'évènement s'applique également aux éléments avec contenteditable activé, et à tout élément lorsque designMode est activé.

Cela permet aux applications web de remplacer le comportement de modification du texte avant que le navigateur ne modifie l'arbre DOM, et offre un meilleur contrôle sur les évènements d'entrée pour améliorer les performances.

Dans le cas de contenteditable et de designMode, la cible de l'évènement est l'hôte d'édition. Si ces propriétés s'appliquent à plusieurs éléments, l'hôte d'édition est l'ancêtre le plus proche dont le parent n'est pas éditable.

Note : Toutes les modifications effectuées par l'utilisateur·ice ne déclenchent pas nécessairement l'évènement beforeinput. De plus, l'évènement peut se déclencher mais être non annulable. Cela peut se produire lorsque la modification est effectuée par la saisie semi-automatique, en acceptant une correction d'un correcteur orthographique, par le remplissage automatique d'un gestionnaire de mots de passe, par un IME, ou d'autres manières. Les détails varient selon le navigateur et le système d'exploitation. Pour remplacer le comportement de modification dans toutes les situations, le code doit gérer l'évènement input et éventuellement annuler toute modification qui n'a pas été traitée par le gestionnaire beforeinput. Voir les bogues 1673558 (angl.) et 1763669 (angl.).

Syntaxe

Utilisez le nom de l'évènement dans des méthodes comme addEventListener(), ou définissez une propriété de gestionnaire d'évènement.

js
addEventListener("beforeinput", (event) => { })

onbeforeinput = (event) => { }

Type d'évènement

Un objet InputEvent. Hérite de UIEvent.

Event UIEvent InputEvent

Propriétés de l'évènement

Cette interface hérite des propriétés de ses parents, UIEvent et Event.

InputEvent.data Lecture seule

Retourne une chaînes de caractères contenant les caractères insérés. Il peut s'agir d'une chaîne de caractères vide si la modification n'insère pas de texte (par exemple, lors de la suppression de caractères).

InputEvent.dataTransfer Lecture seule

Retourne un objet DataTransfer contenant des informations sur les données en texte enrichi ou en texte brut ajoutées ou supprimées du contenu modifiable.

InputEvent.inputType Lecture seule

Retourne le type de modification apportée au contenu modifiable, comme par exemple l'insertion, la suppression ou la mise en forme de texte.

InputEvent.isComposing Lecture seule

Retourne une valeur Boolean indiquant si l'évènement est déclenché après compositionstart et avant compositionend.

Exemples

Détecter de fonctionnalité

La fonction suivante retourne vrai si beforeinput et getTargetRanges, sont pris en charge.

js
function isBeforeInputEventAvailable() {
  return (
    window.InputEvent &&
    typeof InputEvent.prototype.getTargetRanges === "function"
  );
}

Journalisation simple

Cet exemple enregistre la valeur actuelle de l'élément, juste avant de remplacer cette valeur par la nouvelle valeur appliquée à l'élément HTML <input>.

HTML

html
<input placeholder="Entrer du texte" name="nom" />
<p id="valeurs"></p>

JavaScript

js
const entree = document.querySelector("input");
const journal = document.getElementById("valeurs");

entree.addEventListener("beforeinput", actualiserValeur);

function actualiserValeur(e) {
  journal.textContent = e.target.value;
}

Résultat

Spécifications

Spécification
UI Events
# event-type-beforeinput

Compatibilité des navigateurs

Voir aussi

  • Évènement associé : input