programacion-web
Version:
validacion-formularios
118 lines (108 loc) • 3.78 kB
JavaScript
/**
* @file Librería de validación de formularios
* @description Proporciona métodos para validar diferentes tipos de campos de formulario
* @version 1.1.0
*/
const Validacion = {
/**
* Valida un campo requerido
* @param {string} valor - Valor a validar
* @param {string} nombreCampo - Nombre del campo para mensajes de error
* @returns {string} Mensaje de error o cadena vacía si es válido
*/
requerido: (valor, nombreCampo = 'Este campo') => {
if (typeof valor === 'string') valor = valor.trim();
return !valor ? `${nombreCampo} es requerido` : '';
},
/**
* Valida longitud mínima
* @param {string} valor - Valor a validar
* @param {number} min - Longitud mínima
* @param {string} nombreCampo - Nombre del campo
* @returns {string} Mensaje de error o cadena vacía
*/
minLongitud: (valor, min, nombreCampo = 'Este campo') => {
if (!valor) return '';
return valor.length < min
? `${nombreCampo} debe tener al menos ${min} caracteres`
: '';
},
/**
* Valida longitud máxima
* @param {string} valor - Valor a validar
* @param {number} max - Longitud máxima
* @param {string} nombreCampo - Nombre del campo
* @returns {string} Mensaje de error o cadena vacía
*/
maxLongitud: (valor, max, nombreCampo = 'Este campo') => {
if (!valor) return '';
return valor.length > max
? `${nombreCampo} no puede exceder ${max} caracteres`
: '';
},
/**
* Valida un email
* @param {string} email - Email a validar
* @returns {string} Mensaje de error o cadena vacía
*/
email: (email) => {
if (!email) return '';
const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return !re.test(email) ? 'Ingrese un email válido' : '';
},
/**
* Valida un número dentro de un rango
* @param {number} numero - Número a validar
* @param {number} min - Valor mínimo
* @param {number} max - Valor máximo
* @param {string} nombreCampo - Nombre del campo
* @returns {string} Mensaje de error o cadena vacía
*/
rangoNumerico: (numero, min, max, nombreCampo = 'Este campo') => {
if (isNaN(numero)) return `${nombreCampo} debe ser un número`;
return numero < min || numero > max
? `${nombreCampo} debe estar entre ${min} y ${max}`
: '';
},
/**
* Valida que dos campos sean iguales (para contraseñas)
* @param {string} valor1 - Primer valor
* @param {string} valor2 - Segundo valor
* @param {string} nombreCampo - Nombre del campo
* @returns {string} Mensaje de error o cadena vacía
*/
coincidir: (valor1, valor2, nombreCampo = 'Los campos') => {
return valor1 !== valor2 ? `${nombreCampo} no coinciden` : '';
},
/**
* Valida un número de teléfono básico
* @param {string} telefono - Número a validar
* @returns {string} Mensaje de error o cadena vacía
*/
telefono: (telefono) => {
if (!telefono) return '';
const re = /^[0-9]{7,15}$/;
return !re.test(telefono) ? 'Ingrese un teléfono válido' : '';
},
/**
* Valida una URL
* @param {string} url - URL a validar
* @returns {string} Mensaje de error o cadena vacía
*/
url: (url) => {
if (!url) return '';
const re = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
return !re.test(url) ? 'Ingrese una URL válida' : '';
}
};
// Exportación para diferentes entornos
if (typeof module !== 'undefined' && module.exports) {
// Node.js
module.exports = Validacion;
} else if (typeof define === 'function' && define.amd) {
// AMD
define([], () => Validacion);
} else {
// Navegador
window.Validacion = Validacion;
}