hace 4 años
En el desarrollo web moderno, interactuar con los elementos de un formulario es fundamental para crear experiencias de usuario dinámicas y atractivas. Entre estos elementos, los campos de input juegan un papel crucial al permitir a los usuarios introducir datos. JavaScript, como lenguaje de programación del lado del cliente, ofrece varias maneras de acceder y manipular los valores de estos campos de input, especialmente en respuesta a eventos generados por la interacción del usuario. Este artículo te guiará a través de las técnicas más comunes y efectivas para obtener el valor de un input en JavaScript cuando se produce un evento, proporcionándote ejemplos prácticos y explicaciones detalladas para que puedas implementarlas en tus proyectos web.

Métodos para Obtener el Valor de Campos de Input en JavaScript
JavaScript proporciona diversas formas de acceder al valor de un campo de input. A continuación, exploraremos los métodos más utilizados, cada uno con sus propias ventajas y escenarios de aplicación.

, function getInputValue() {
1. Usando document.getElementById()
El método document.getElementById() es una de las formas más directas y ampliamente utilizadas para seleccionar un elemento HTML en el DOM (Modelo de Objetos del Documento) utilizando su ID único. Una vez que tienes el elemento, puedes acceder a su propiedad value para obtener el valor actual del campo de input.
Ejemplo práctico:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Obtener Valor de Input</title> </head> <body> <input type="text" id="miInput" value="Hola Mundo!" /> <button onclick="obtenerValorInput()">Obtener Valor</button> <p id="salida"></p> <script> function obtenerValorInput() { const valorInput = document.getElementById('miInput').value; document.getElementById('salida').innerText = `Valor del Input: ${valorInput}`; } </script> </body> </html> Explicación del código:
- Definimos un campo de input de tipo texto con el id
miInputy un valor inicial "Hola Mundo!". - Creamos un botón que, al hacer clic (evento
onclick), ejecuta la funciónobtenerValorInput(). - La función
obtenerValorInput()utilizadocument.getElementById('miInput')para obtener el elemento input por su ID, y luego accede a su propiedadvaluepara obtener el valor. - Finalmente, muestra el valor obtenido en un párrafo con el id
salida.
2. Usando document.querySelector()
El método document.querySelector() ofrece una mayor flexibilidad que getElementById(), ya que permite seleccionar el primer elemento que coincida con un selector CSS especificado. Esto significa que puedes usar selectores de clase, atributos, o cualquier otro selector CSS para identificar el campo de input.
Ejemplo práctico:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Obtener Valor de Input</title> </head> <body> <input type="text" class="mi-input" value="Hola Mundo!" /> <button onclick="obtenerValorInput()">Obtener Valor</button> <p id="salida"></p> <script> function obtenerValorInput() { const valorInput = document.querySelector('.mi-input').value; document.getElementById('salida').innerText = `Valor del Input: ${valorInput}`; } </script> </body> </html> Explicación del código:
- En este caso, el campo de input tiene la clase
mi-inputen lugar de un ID. document.querySelector('.mi-input')selecciona el primer elemento HTML que tenga la clasemi-input. El punto.al inicio de'.mi-input'indica que estamos utilizando un selector de clase CSS.- El resto del código funciona de manera similar al ejemplo anterior, obteniendo el valor del input y mostrándolo en el párrafo.
3. Usando event.target en Manejadores de Eventos
Cuando se trabaja con manejadores de eventos, como onclick o addEventListener, el objeto event se proporciona como argumento a la función manejadora. Este objeto event contiene información sobre el evento que ocurrió, incluyendo la propiedad target. event.target se refiere al elemento HTML que desencadenó el evento. Esto es especialmente útil cuando se delegan eventos o se quiere acceder al input dentro del contexto del evento.
Ejemplo práctico:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Obtener Valor de Input</title> </head> <body> <input type="text" id="miInput" value="Hola Mundo!" /> <button id="botonObtenerValor">Obtener Valor</button> <p id="salida"></p> <script> document.getElementById('botonObtenerValor').addEventListener('click', function(event) { const valorInput = document.getElementById('miInput').value; document.getElementById('salida').innerText = `Valor del Input: ${valorInput}`; }); </script> </body> </html> Explicación del código:
- Utilizamos
addEventListener('click', ...)para adjuntar un manejador de eventos al botón con el idbotonObtenerValor. - La función manejadora recibe el objeto
eventcomo primer argumento. - Aunque en este ejemplo no usamos directamente
event.targetpara obtener el input, es importante entender queevent.targetsería el botón en este caso (el elemento que recibió el clic). Si el input estuviera dentro del botón o relacionado jerárquicamente,event.targetpodría ser relevante para navegar hacia el input, aunque en este caso seguimos usandodocument.getElementById('miInput')para una mayor claridad en la obtención del input específico.
4. Usando la Palabra Clave this en Manejadores de Eventos en Línea
Dentro de un manejador de eventos en línea (definido directamente en el atributo HTML, como onclick o oninput), la palabra clave this se refiere al elemento HTML que desencadenó el evento. Esto permite acceder directamente al elemento input y a su propiedad value.
Ejemplo práctico:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Obtener Valor de Input</title> </head> <body> <input type="text" id="miInput" value="Hola Mundo!" oninput="mostrarValor(this)" /> <p id="salida"></p> <script> function mostrarValor(elementoInput) { const valorInput = elementoInput.value; document.getElementById('salida').innerText = `Valor del Input: ${valorInput}`; } </script> </body> </html> Explicación del código:
- En el atributo
oninputdel input, llamamos a la funciónmostrarValor(this). - Dentro de la función
mostrarValor,this(que se pasa comoelementoInput) se refiere al elemento input que generó el eventoinput. - Accedemos directamente a
elementoInput.valuepara obtener el valor. - Este método es conciso y útil para escenarios simples donde el manejador de eventos está directamente asociado al input en el HTML.
5. Usando jQuery (Si Estás Utilizando jQuery)
Si tu proyecto utiliza la biblioteca jQuery, puedes simplificar la obtención de valores de input con su sintaxis concisa y sus métodos de selección de elementos.

Ejemplo práctico con jQuery:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Obtener Valor de Input con jQuery</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <!-- Incluir jQuery --> </head> <body> <input type="text" id="miInputJQuery" value="Hola Mundo con jQuery!" /> <button id="botonObtenerValorJQuery">Obtener Valor con jQuery</button> <p id="salidaJQuery"></p> <script> $(document).ready(function() { $('#botonObtenerValorJQuery').click(function() { const valorInput = $('#miInputJQuery').val(); // Usando .val() de jQuery $('#salidaJQuery').text(`Valor del Input (jQuery): ${valorInput}`); // Usando .text() de jQuery }); }); </script> </body> </html> Explicación del código con jQuery:
- Primero, incluimos la biblioteca jQuery en la sección
<head>del HTML. - Dentro del bloque
$(document).ready(function() { ... });, nos aseguramos de que el código jQuery se ejecute solo después de que el documento HTML esté completamente cargado. $('#botonObtenerValorJQuery').click(function() { ... });selecciona el botón por su ID usando la sintaxis de selector CSS de jQuery y adjunta un manejador de eventosclick.$('#miInputJQuery').val()utiliza el método.val()de jQuery para obtener el valor del input con el IDmiInputJQuery. Este método es similar a acceder a la propiedad.valueen JavaScript nativo, pero es específico de jQuery.$('#salidaJQuery').text(...)utiliza el método.text()de jQuery para establecer el contenido de texto del elemento con el IDsalidaJQuery.
El Evento input en JavaScript
Es importante mencionar el evento input en JavaScript, ya que está estrechamente relacionado con la obtención de valores de input de manera reactiva. A diferencia del evento change (que veremos a continuación), el evento input se dispara instantáneamente cada vez que el valor de un elemento <input>, <textarea> o <select> cambia. Esto lo hace ideal para actualizaciones en tiempo real, validación instantánea y otras interacciones dinámicas.
Ejemplo del evento input:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Evento Input</title> </head> <body> <input type="text" id="miInputEventoInput" placeholder="Escribe algo aquí" /> <p id="salidaEventoInput"></p> <script> document.getElementById('miInputEventoInput').addEventListener('input', function(event) { const valorInput = event.target.value; // Obteniendo el valor con event.target document.getElementById('salidaEventoInput').innerText = `Valor en tiempo real: ${valorInput}`; }); </script> </body> </html> En este ejemplo, cada vez que escribes o modificas el texto en el campo de input, el evento input se dispara y la función manejadora actualiza el párrafo #salidaEventoInput con el valor actual del input. Esto proporciona una retroalimentación inmediata al usuario.
El Evento change en JavaScript
El evento change en JavaScript se dispara cuando el valor de un elemento ha sido cambiado y, lo más importante, el elemento pierde el foco. Este evento se aplica principalmente a los elementos <input>, <select> y <textarea>. Es crucial entender la diferencia con el evento input: change no se dispara con cada pulsación de tecla, sino hasta que el usuario termina de interactuar con el campo (por ejemplo, haciendo clic fuera del campo o presionando la tecla Tab).
Puntos clave sobre el evento change:
- Se dispara después de que el valor cambia y el elemento pierde el foco.
- A diferencia del evento
input, no se dispara instantáneamente con cada cambio de valor. - Se propaga (hace bubbling) a través del DOM, lo que significa que un evento
changeen un elemento hijo puede activar manejadores en elementos padres. - No se dispara si el valor se cambia programáticamente con JavaScript; solo responde a la interacción del usuario.
- Es ideal para la validación de formularios y la captura del valor final antes del envío del formulario.
Ejemplo del evento change:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Evento Change</title> </head> <body> <input type="text" id="miInputEventoChange" placeholder="Escribe algo y cambia el foco" /> <p id="salidaEventoChange"></p> <script> document.getElementById('miInputEventoChange').addEventListener('change', function(event) { const valorInput = event.target.value; document.getElementById('salidaEventoChange').innerText = `Valor al perder foco: ${valorInput}`; console.log('Evento change disparado!'); }); </script> </body> </html> En este ejemplo, el mensaje "Evento change disparado!" y el valor del input se mostrarán en el párrafo #salidaEventoChange y en la consola solo después de que escribas algo en el input y luego hagas clic fuera del input o cambies el foco a otro elemento.
Casos de Uso Comunes del Evento change
El evento change es fundamental para diversas funcionalidades en aplicaciones web interactivas. Algunos de los casos de uso más comunes incluyen:
1. Validación de Formularios
La validación de formularios es uno de los usos más frecuentes del evento change. Permite verificar la validez de los datos ingresados por el usuario justo antes de que se envíe el formulario, o al cambiar de campo. Puedes validar formatos de correo electrónico, campos obligatorios, rangos numéricos, etc.

Ejemplo de validación de correo electrónico con change:
const emailInput = document.getElementById('email'); emailInput.addEventListener('change', () => { if (!/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(emailInput.value)) { // Validación básica de email alert('Correo electrónico no válido'); // Mostrar error } else { console.log('Correo electrónico válido'); // El email es válido } }); 2. Actualizaciones Dinámicas de la UI
El evento change es útil para actualizar dinámicamente otras partes de la interfaz de usuario en función del valor cambiado en un input. Esto puede incluir el cálculo de totales, el filtrado de datos en tablas, o la modificación de gráficos.
Ejemplo de actualización de total de precio según la cantidad con change:
const cantidadInput = document.getElementById('cantidad'); const totalElemento = document.getElementById('total'); const precioProducto = 10; // Precio fijo del producto cantidadInput.addEventListener('change', () => { let total = cantidadInput.value * precioProducto; totalElemento.innerText = `Total: $${total}`; }); 3. Enlace de Datos (Data Binding)
El evento change facilita el enlace de datos entre la interfaz de usuario y el modelo de datos de JavaScript o el almacenamiento en el backend. Cuando el valor de un input cambia, puedes actualizar el modelo de datos y, opcionalmente, guardar los cambios en una base de datos.
Ejemplo de enlace de datos básico con change:
const modelo = { nombre: 'Juan' }; const nombreInput = document.getElementById('nombre'); nombreInput.addEventListener('change', () => { modelo.nombre = nombreInput.value; console.log('Modelo actualizado:', modelo); // Aquí podrías guardar el modelo en el backend (ejemplo: saveToDatabase(modelo);) }); 4. Activación Manual del Evento change
En ocasiones, es necesario activar manualmente el evento change programáticamente en lugar de esperar la interacción del usuario. Esto puede ser útil en pruebas automatizadas o para sincronizar el estado de la UI con el estado del modelo de datos.
Usando dispatchEvent() para activar manualmente change:
const inputEjemplo = document.getElementById('inputEjemplo'); // Crear un nuevo evento 'change' const eventoCambio = new Event('change'); // Asignar un nuevo valor al input (opcional, si quieres que el evento refleje un cambio) inputEjemplo.value = 'Nuevo valor programático'; // Disparar el evento 'change' en el input inputEjemplo.dispatchEvent(eventoCambio); Conclusión
Comprender cómo obtener el valor de un input desde un evento en JavaScript es esencial para el desarrollo web interactivo. Ya sea utilizando métodos como document.getElementById() o document.querySelector(), aprovechando las propiedades del objeto event, o empleando la palabra clave this en manejadores de eventos en línea, JavaScript te proporciona las herramientas necesarias para interactuar con los datos ingresados por el usuario. Además, la distinción entre los eventos input y change te permite elegir la mejor estrategia para responder a las interacciones del usuario de manera eficiente, ya sea para actualizaciones en tiempo real o validaciones al finalizar la edición. Dominar estas técnicas te permitirá crear aplicaciones web más dinámicas, responsivas y centradas en la experiencia del usuario.
