HTMLElement: change event
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Das change
-Ereignis wird für <input>
, <select>
und <textarea>
Elemente ausgelöst, wenn der Benutzer den Wert des Elements ändert. Im Gegensatz zum input
-Ereignis wird das change
-Ereignis nicht unbedingt bei jeder Änderung eines Elements value
ausgelöst.
Je nach Art des geänderten Elements und der Art und Weise, wie der Benutzer mit dem Element interagiert, wird das change
-Ereignis zu einem unterschiedlichen Zeitpunkt ausgelöst:
- Wenn ein
<input type="checkbox">
-Element aktiviert oder deaktiviert wird (durch Klicken oder Verwenden der Tastatur); - Wenn ein
<input type="radio">
-Element ausgewählt wird (aber nicht, wenn es abgewählt wird); - Wenn der Benutzer die Änderung explizit übernimmt (z.B. durch Auswahl eines Wertes aus der Dropdown-Liste eines
<select>
mit einem Mausklick, durch Auswahl eines Datums in einem Datumsauswahlfeld für<input type="date">
, durch Auswahl einer Datei im Dateiauswahlfenster für<input type="file">
, etc.); - Wenn das Element den Fokus verliert, nachdem sein Wert geändert wurde: für Elemente, bei denen die Interaktion des Benutzers Eingabe durch Tippen anstatt Auswahl ist, wie z.B. ein
<textarea>
oder dietext
,search
,url
,tel
,email
oderpassword
Typen des<input>
Elements.
Die HTML-Spezifikation listet die <input>
-Typen, die das change
-Ereignis auslösen sollten.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
oder setzen Sie eine Event-Handler-Eigenschaft.
addEventListener("change", (event) => { })
onchange = (event) => { }
Eventtyp
Ein generisches Event
.
Beispiele
<select>
-Element
HTML
<label>
Choose an ice cream flavor:
<select class="ice-cream" name="ice-cream">
<option value="">Select One …</option>
<option value="chocolate">Chocolate</option>
<option value="sardine">Sardine</option>
<option value="vanilla">Vanilla</option>
</select>
</label>
<div class="result"></div>
JavaScript
const selectElement = document.querySelector(".ice-cream");
const result = document.querySelector(".result");
selectElement.addEventListener("change", (event) => {
result.textContent = `You like ${event.target.value}`;
});
Ergebnis
Texteingabeelement
Für einige Elemente, einschließlich <input type="text">
, wird das change
-Ereignis erst ausgelöst, wenn das Steuerelement den Fokus verliert. Versuchen Sie, etwas in das folgende Feld einzugeben und klicken Sie dann irgendwo anders hin, um das Ereignis auszulösen.
HTML
<input placeholder="Enter some text" name="name" />
<p id="log"></p>
JavaScript
const input = document.querySelector("input");
const log = document.getElementById("log");
input.addEventListener("change", updateValue);
function updateValue(e) {
log.textContent = e.target.value;
}
Ergebnis
Spezifikationen
Specification |
---|
HTML # event-change |
HTML # handler-onchange |
Browser-Kompatibilität
Verschiedene Browser sind sich nicht immer einig, ob ein change
-Ereignis für bestimmte Arten der Interaktion ausgelöst werden soll. Zum Beispiel hat die Tastaturnavigation in <select>
-Elementen in Gecko nie ein change
-Ereignis ausgelöst, bis der Benutzer Enter gedrückt oder den Fokus vom <select>
wegbewegt hat (siehe Firefox-Bug 126379). Seit Firefox 63 (Quantum) ist dieses Verhalten jedoch zwischen allen großen Browsern konsistent.