El evento change se dispara para los controles select, textarea e input de tipo text.
Para el control input se dispara cuando ha cambiado su contenido y pierde el foco, en cambio para el control select cada vez que cambiamos el item seleccionado se dispara el evento.
Confeccionaremos una página que contenga dos text y un select, mostraremos en una ventana alert el objeto que emite el evento change:
pagina.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Prueba</title>
</head>
<body>
<form action="#">
<p>Nombre:<input type="text" id="nombre" name="nombre"></p>
<p>Apellido:<input type="text" id="apellido" name="apellido"></p>
<p>Cantidad de hijos:<select id="hijos">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select></p>
<p><input type="submit" value="confirmar"></p>
</form>
<script src="funciones.js"></script>
</body>
</html>
funciones.js
document.getElementById('nombre').addEventListener('change', modificarControl)
document.getElementById('apellido').addEventListener('change', modificarControl)
document.getElementById('hijos').addEventListener('change', modificarControl)
function modificarControl(e) {
let ob = e.target
alert('Se modificó el control:' + ob.getAttribute('id'))
}
Podemos decir que enlazamos los tres controles con la misma función "modificarControl", en esta obtenemos la referencia del objeto que emitió el evento:
function modificarControl(e) {
let ob = e.target
alert('Se modificó el control:' + ob.getAttribute('id'))
}
Y luego mediante el método getAttribute obtenemos el valor del id.