Manipulación Dinámica de Documentos Web con JavaScript: DOM y Validación de Formularios
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 8,64 KB
Introducción al Modelo de Objetos del Documento (DOM) y Manipulación Web
1. Definición y Estructura del DOM
El DOM (Document Object Model) es la representación estructurada del documento HTML vista como un objeto. Es creado automáticamente por el navegador al cargar la página.
Permite acceder a la estructura, estilo y contenido de la web para modificarlos dinámicamente.
Representación Jerárquica del DOM
El DOM organiza el documento como un árbol de nodos:
- Documento
- [ html ]
- [ head ]
- [ body ]
- [ div ]
- [ p ]
- [ html ]
Las etiquetas son nodos de tipo Elemento y el contenido textual dentro de ellas es un nodo de tipo Texto (son nodos hijos distintos).
3. Estructura Semántica y Manejadores de Eventos
Esta estructura promueve la separación del código HTML (contenido) del JavaScript (comportamiento), evitando "ensuciar" el HTML con atributos en línea como onclick="...".
Asignación Semántica de Eventos
La fórmula para asignar un manejador de eventos de forma semántica es:
elementoDOM.evento = función;
Se recomienda seleccionar el elemento por su id y asignar la función SIN paréntesis (si se incluyen paréntesis, la función se ejecuta inmediatamente y no cuando ocurre el evento).
Ejemplo de Asignación Semántica
// HTML:
<input type="button" id="miBoton" value="Validar">
function saludar() { alert("Hola"); }
// Asignación semántica:
var boton = document.getElementById("miBoton");
boton.onclick = saludar; // ¡OJO! saludar sin ()
4. Contextualización de la Validación en Formularios
Validar en un formulario implica comprobar con JavaScript, antes de enviar los datos al servidor, que la información introducida por el usuario es correcta.
El Proceso de Validación Cliente
- Si hay un error (ej. campo vacío), se captura el evento.
- Se detiene el envío del formulario.
- Se muestra un mensaje de error en un elemento
<p>situado debajo del<input>, modificando sus propiedades (estilo, contenido).
Diferencia entre Validación Cliente (JS) y Servidor (PHP)
- JS (Validación Cliente): Es inmediata. No recarga la página. Mejora la experiencia del usuario avisando al instante.
- PHP (Validación Servidor): Ocurre después de enviar. Si hay error, la página se recarga y el servidor devuelve el fallo. Es obligatoria por seguridad.
Ejemplo de Detección de Campo Vacío
// Si el valor está vacío, mostramos error en el párrafo:
var input = document.getElementById("nombre");
var errorP = document.getElementById("error-msg");
if (input.value === "") {
errorP.textContent = "El nombre es obligatorio"; // Muestra el error
errorP.style.color = "red";
}
5. Propiedades y Atributos del DOM
Son las características de los elementos que podemos leer o cambiar como si fueran propiedades de un objeto.
Tipos Principales de Propiedades
- Contenido:
.innerHTML: Devuelve o cambia el contenido incluyendo etiquetas HTML..textContent: Devuelve o cambia solo el texto plano (ignora etiquetas).
- Formularios:
.value: Valor escrito en inputs, selects, etc..checked: Estado (true/false) de checkboxes o radios..disabled: Habilita o deshabilita un campo.
- Atributos Visuales/HTML:
.src: Ruta de una imagen..className: Clase CSS del elemento..style: Para cambiar CSS directo (ej:.style.color = 'red').
6. Creación y Eliminación Permanente de Elementos
Para que un cambio sea permanente en la sesión actual, es necesario modificar la estructura del árbol del DOM, no solo ocultar el elemento.
A) Crear un Elemento (4 Pasos)
- Crear nodo Elemento:
document.createElement("etiqueta"). - Crear nodo Texto:
document.createTextNode("Contenido"). - Unir Texto al Elemento:
elemento.appendChild(texto). - Insertar en la página:
padre.appendChild(elemento).
Ejemplo de Creación
var nuevoP = document.createElement("p"); // 1
var texto = document.createTextNode("Hola"); // 2
nuevoP.appendChild(texto); // 3
document.body.appendChild(nuevoP); // 4
B) Eliminar un Elemento
Se necesita el padre del elemento para eliminar al hijo usando removeChild.
Fórmula: hijo.parentNode.removeChild(hijo);.
Ejemplo de Eliminación
var parrafo = document.getElementById("borrarme");
parrafo.parentNode.removeChild(parrafo);
Técnicas Comunes de Validación de Formularios con JavaScript
1. Validar Campo de Texto Obligatorio
Comprueba que el campo no sea nulo, que tenga longitud y que no sean solo espacios en blanco.
var valor = document.getElementById("campo").value;
// Comprueba nulo, longitud 0 o si solo contiene espacios:
if(valor == null || valor.length == 0 || /^\s+$/.test(valor)) {
return false; // El campo no es válido}
2. Validar Campo Numérico
Asegura que el valor introducido sea un número válido.
var valor = document.getElementById("campo").value;
// Si no es un número (isNaN), devuelve false:
if(isNaN(valor)) {
return false;}
3. Validar Número de Teléfono
Comprueba que sean exactamente 9 dígitos consecutivos (sin espacios ni guiones).
var valor = document.getElementById("campo").value;
// Expresión regular para 9 dígitos exactos:
if( !(/^\d{9}$/.test(valor)) ) {
return false;}
6. Validar Lista Desplegable (<select>)
Obliga a que el usuario seleccione una opción diferente a la de por defecto (cuyo valor suele ser 0 o vacío).
var indice = document.getElementById("opciones").selectedIndex;
// Si no hay selección o es la opción por defecto (índice 0):
if(indice == null || indice == 0) {
return false;}
7. Validar una Fecha
Asumiendo que tienes los valores de año, mes y día por separado.
var ano = document.getElementById("ano").value;
// Recuerda: En JavaScript los meses van de 0 (Enero) a 11 (Diciembre)
var mes = document.getElementById("mes").value;
var dia = document.getElementById("dia").value;
var valor = new Date(ano, mes, dia);
// Si la fecha no es válida:
if(isNaN(valor)) { return false;}
8. Validar Checkbox (Casilla de verificación)
Opción A: Un solo checkbox obligatorio (ej. "Acepto condiciones")
var elemento = document.getElementById("campo");
// Si no está marcado (.checked es false):
if( !elemento.checked ) {
return false;}
Opción B: Verificar todos los checkboxes de un formulario
var formulario = document.getElementById("formulario");
for(var i=0; i < formulario.elements.length; i++) {
var elemento = formulario.elements[i];
if(elemento.type == "checkbox") {
if(!elemento.checked) {
return false; // Si encuentra uno sin marcar, falla } }}
9. Validar Radio Buttons (Opciones excluyentes)
Comprueba que al menos una opción del grupo haya sido seleccionada.
var opciones = document.getElementsByName("opciones"); // Se busca por 'name', no por 'id'
var seleccionado = false;
// Recorrer todos los radios del grupo
for(var i=0; i < opciones.length; i++) {
if(opciones[i].checked) {
seleccionado = true;
break; // Si encontramos uno marcado, paramos de buscar }}
// Si al terminar el bucle ninguno estaba marcado
if(!seleccionado) {
return false;}