Element: beforeinput Ereignis
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since März 2021.
Das DOM-beforeinput-Ereignis wird ausgelöst, wenn der Wert eines <input>- oder <textarea>-Elements geändert werden soll. Im Gegensatz zum input-Ereignis wird es jedoch nicht beim <select>-Element ausgelöst. Das Ereignis gilt auch für Elemente mit aktivierter contenteditable-Eigenschaft und für beliebige Elemente, wenn designMode aktiviert ist.
Dadurch können Web-Apps das Verhalten bei Texteinträgen überschreiben, bevor der Browser den DOM-Baum ändert, und sie bieten mehr Kontrolle über Eingabeereignisse zur Verbesserung der Leistung.
Im Fall von contenteditable und designMode ist das Ereignisziel der Editing Host. Wenn diese Eigenschaften auf mehrere Elemente zutreffen, ist der Editing Host das nächstgelegene Vorelement, dessen Elternteil nicht bearbeitbar ist.
Hinweis:
Nicht jede Benutzermodifikation führt zur Auslösung von beforeinput. Außerdem kann es vorkommen, dass das Ereignis ausgelöst wird, aber nicht abgebrochen werden kann. Dies kann passieren, wenn die Änderung durch Autovervollständigung, durch Annahme einer Korrektur von einem Rechtschreibprüfer, durch automatisches Ausfüllen durch den Passwort-Manager, durch IME oder auf andere Weise vorgenommen wird. Die Details variieren je nach Browser und Betriebssystem. Um das Bearbeitungsverhalten in allen Situationen zu überschreiben, muss der Code das input-Ereignis behandeln und möglicherweise Änderungen rückgängig machen, die nicht vom beforeinput-Handler behandelt wurden. Siehe Bugs 1673558 und 1763669.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder legen Sie eine Ereignis-Handler-Eigenschaft fest.
addEventListener("beforeinput", (event) => { })
onbeforeinput = (event) => { }
Ereignistyp
Ein InputEvent. Erbt von UIEvent.
Ereigniseigenschaften
Diese Schnittstelle erbt Eigenschaften von ihren Eltern, UIEvent und Event.
InputEvent.dataSchreibgeschützt-
Gibt eine Zeichenfolge mit den eingefügten Zeichen zurück. Dies kann eine leere Zeichenfolge sein, wenn die Änderung keinen Text einfügt (z. B. beim Löschen von Zeichen).
InputEvent.dataTransferSchreibgeschützt-
Gibt ein
DataTransfer-Objekt zurück, das Informationen über richtext- oder plaintext-Daten enthält, die zu bearbeitbaren Inhalten hinzugefügt oder daraus entfernt werden. InputEvent.inputTypeSchreibgeschützt-
Gibt den Typ der Änderung für bearbeitbare Inhalte zurück, wie z. B. Einfügen, Löschen oder Formatieren von Text.
InputEvent.isComposingSchreibgeschützt-
Gibt einen
Boolean-Wert zurück, der angibt, ob das Ereignis nachcompositionstartund vorcompositionendausgelöst wird.
Beispiele
>Funktionserkennung
Die folgende Funktion gibt true zurück, wenn beforeinput und somit getTargetRanges unterstützt wird.
function isBeforeInputEventAvailable() {
return (
window.InputEvent &&
typeof InputEvent.prototype.getTargetRanges === "function"
);
}
Einfacher Logger
Dieses Beispiel protokolliert den aktuellen Wert des Elements, unmittelbar bevor dieser Wert durch den neuen Wert ersetzt wird, der auf das <input>-Element angewendet wird.
HTML
<input placeholder="Enter some text" name="name" />
<p id="values"></p>
JavaScript
const input = document.querySelector("input");
const log = document.getElementById("values");
input.addEventListener("beforeinput", updateValue);
function updateValue(e) {
log.textContent = e.target.value;
}
Ergebnis
Spezifikationen
| Specification |
|---|
| UI Events> # event-type-beforeinput> |
Browser-Kompatibilität
Loading…
Siehe auch
- Verwandtes Ereignis:
input