--- title: 'HTMLElement: Evento change' slug: Web/API/HTMLElement/change_event tags: - Change - DOM - Evento - HTML - Referencia - Web translation_of: Web/API/HTMLElement/change_event ---
El evento change se dispara para elementos {{HTMLElement("input")}}, {{HTMLElement("select")}}, y {{HTMLElement("textarea")}} cuando una alteración al valor de un elemento es confirmada por el usuario. A diferencia del evento {{event("input")}}, el evento change no es disparado necesariamente por cada alteración al valor value del elemento
| Burbujas | Sí |
|---|---|
| Cancelable | No |
| Interfaz | {{domxref("Event")}} |
| Propiedad del manejador del evento | onchange |
Dependiendo del tipo de elemento siendo cambiado y la forma en que el usuario interactua con el elemento, el evento change dispara en un momento diferente:
:checked (ya sea dando click o usuando el teclado) para elementos <input type="radio"> y <input type="checkbox">;<input type="date">, al seleccionar un archivo en un selector de archivo por un elemento <input type="file">, etc.);<input type="text">).La especificaciones HTML listan los tipos de <input> que deberían disparar el evento change.
<label>Elija un sabor de nieve:
<select class="nieve" name="nieve">
<option value="">Seleccione Uno …</option>
<option value="chocolate">Chocolate</option>
<option value="sardina">Sardina</option>
<option value="vainilla">Vainilla</option>
</select>
</label>
<div class="resultado"></div>
body {
display: grid;
grid-template-areas: "select result";
}
select {
grid-area: select;
}
.resultado {
grid-area: result;
}
const selectElement = document.querySelector('.nieve');
selectElement.addEventListener('change', (event) => {
const resultado = document.querySelector('.resultado');
resultado.textContent = `Te gusta el sabor ${event.target.value}`;
});
{{ EmbedLiveSample('select-example', '100%', '75px') }}
Para algunos elementos, incluyendo <input type="text">, el evento change no se lanza hasta que el campo pierde el foco. Prueba a introducir algo en el campo anterior, y luego pulsa en algún otro lugar para lanzar el evento.
<input placeholder="Enter some text" name="name"/>
<p id="log"></p>
const input = document.querySelector('input');
const log = document.getElementById('log');
input.addEventListener('change', updateValue);
function updateValue(e) {
log.textContent = e.target.value;
}
{{ EmbedLiveSample('Text_input_element', '100%', '75px') }}
| Especificación | Estado |
|---|---|
| {{SpecName('HTML WHATWG', "indices.html#event-change", "change")}} | {{Spec2('HTML WHATWG')}} |
{{Compat("api.HTMLElement.change_event")}}
Diferentes navegadores no siempre concuerdan cuando un evento change debería ser disparado para ciertos tipo de interacciones. Por ejemplo, navegación por teclado en en elementos {{HTMLElement("select")}} nunca disparan el evento change en Gecko hasta que el usuario presiona Enter o cambia el foco fuera del <select> (ver {{bug("126379")}}). A partir de Firefox 63 (Quantum), sin embargo, este comportamiento es consistente entre los mayores navegadores.