window.onload = function() {
// Evento para validar el formulario
document.formulario.enviar.onclick = validar;
// Evento para el campo "Nombre"
document.formulario.nombre.onblur = function() {
var campoName = this.name;
var comprobarNombreVacio = comprobarCampoVacio(this);
if (! comprobarNombreVacio) {
mostrarMensaje(this, "mensaje_" + campoName, "Debes ingresar tu nombre", "mensaje_style_1", "before");
} else {
borrarMensaje("mensaje_" + campoName);
}
};
// Evento para el campo "Email"
document.formulario.email.onblur = function() {
var campoName = this.name;
var comprobarEmailVacio = comprobarCampoVacio(this);
var validarEmail = this.value.match(/^[a-zA-Z0-9_\-]+([\.][a-zA-Z0-9_\-]+)*\@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9]{2,4})+$/);
if (! comprobarEmailVacio) {
mostrarMensaje(this, "mensaje_" + campoName, "Debes ingresar tu email", "mensaje_style_1", "before");
} else if (! validarEmail) {
mostrarMensaje(this, "mensaje_" + campoName, "El email no es válido", "mensaje_style_1", "before");
} else {
borrarMensaje("mensaje_" + campoName);
}
};
// Eventos para el campo "telefono"
document.formulario.telefono.onkeypress = function(evento) {
var evento = evento || window.event;
var caracterCode = evento.charCode || evento.keyCode;
var caracter = String.fromCharCode(caracterCode);
var campoName = this.name;
if(! comprobarTeclaPresionada(caracter, caracterCode, " ()+0123456789")) {
mostrarMensaje(this, "mensaje_" + campoName, "Carácter no válido", "mensaje_style_1", "before");
return false;
} else {
borrarMensaje("mensaje_" + campoName);
return true;
}
}
document.formulario.telefono.onblur = function() {
var campoName = this.name;
var comprobarTelefonoVacio = comprobarCampoVacio(this);
if (! comprobarTelefonoVacio) {
mostrarMensaje(this, "mensaje_" + campoName, "Debes ingresar tu teléfono", "mensaje_style_1", "before");
} else {
borrarMensaje("mensaje_" + campoName);
}
}
document.formulario.telefono.onpaste = function(elEvento) {
return false;
}
// Eventos para el textarea "texto"
document.formulario.texto.onkeypress = function(elEvento) {
var evento = elEvento || window.event;
if (comprobarLimiteDeTexto(evento, this, 10)) {
return true;
} else {
return false;
}
}
document.formulario.texto.onkeyup = function(elEvento) {
var valorLongitud = this.value.length;
if (valorLongitud <= 10) {
mostrarMensaje(this, "mensaje_" + this.name, (10-valorLongitud)+" carácteres restantes", "mensaje_style_1", "before");
}
}
document.formulario.texto.onblur = function() {
var campoName = this.name;
var comprobarTextoVacio = comprobarCampoVacio(this);
if (! comprobarTextoVacio) {
mostrarMensaje(this, "mensaje_" + campoName, "Debes escribir un texto", "mensaje_style_1", "before");
} else {
borrarMensaje("mensaje_" + campoName);
}
};
document.formulario.texto.onpaste = function(elEvento) {
return false;
}
// Eventos para la lista de nombre "lista"
document.formulario.lista.onblur = function() {
var listaSelectedIndex = this.selectedIndex;
var opcionSeleccionada = this.options[listaSelectedIndex];
var campoName = this.name;
if (listaSelectedIndex == 0) {
mostrarMensaje(this, "mensaje_" + campoName, "Debes elegir tu país", "mensaje_style_1", "before");
} else {
borrarMensaje("mensaje_" + campoName);
}
}
// Eventos para desactivar/activar los chechboxs
document.getElementById("opcion_activar").onclick = opcionesActivarDesactivar;
document.getElementById("opcion_desactivar").onclick = opcionesActivarDesactivar;
function opcionesActivarDesactivar() {
campos = document.getElementById("opc_checkboxs").getElementsByTagName("input");
for (i in campos) {
if (campos[i].disabled == true && this.id == "opcion_activar") {
campos[i].disabled = false;
} else if (campos[i].disabled == false && this.id == "opcion_desactivar") {
campos[i].disabled = true;
}
}
}
}
function comprobarCampoVacio(campo) {
var valor = campo.value;
if (valor == null || valor == 0 || valor.match(/^\s+$/)) {
return false;
} else {
return true;
}
}
function comprobarInputCaracteres(campo, caracteresPermitidos) {
var caracteres = campo.value.split("");
var permitir = true;
for (i in caracteres) {
if (caracteresPermitidos.indexOf(caracteres[i]) == -1) {
permitir = false;
break;
}
}
return permitir;
}
function comprobarLimiteDeTexto(evento, campo, limite) {
var teclasEspeciales = [8, 46, 37, 39, 116];
if (campo.value.length >= limite) {
var codigoCaracter = evento.charCode || evento.keyCode;
var resultado = false;
for (i in teclasEspeciales) {
if (codigoCaracter == teclasEspeciales[i]) {
resultado = true;
}
}
return resultado;
} else {
return true;
}
}
function comprobarTeclaPresionada(caracter, caracterCode, caracteresPermitidos) {
var teclasEspeciales = [8, 46, 37, 39, 116];
var teclaEspecial = false;
for (i in teclasEspeciales) {
if (caracterCode == teclasEspeciales[i]) {
teclaEspecial = true;
break;
}
}
if (teclaEspecial) {
return true;
} else if (caracteresPermitidos.indexOf(caracter) == -1) {
return false;
} else {
return true;
}
}
function camelCase(cadena) {
return cadena.toLowerCase().replace(/-(.)/g, function(match, grupo) {
return grupo.toUpperCase();
});
}
function mostrarMensaje(elemento, idCajaMensaje, mensajeTxt, estilos, afterBefore) {
var cajaMsg = document.getElementById(idCajaMensaje);
if (cajaMsg) {
cajaMsg.innerHTML = mensajeTxt;
} else {
var caja = document.createElement("div");
var mensaje = document.createTextNode(mensajeTxt);
caja.appendChild(mensaje);
caja.id = idCajaMensaje;
var separar;
estilos = estilos.split(";");
for (i in estilos) {
separar = estilos[i].split(":");
if (separar.length == 1) {
caja.className = separar[0];
break;
} else {
caja.style[camelCase(separar[0]).replace(/(\s)/g, '')] = separar[1];
}
}
if (afterBefore == "before") {
elemento.parentNode.insertBefore(caja, elemento);
} else if (afterBefore == "after") {
insertAfter(caja, elemento);
}
}
}
function borrarMensaje(idCaja) {
var cajaMsg = document.getElementById(idCaja);
if (cajaMsg) {
cajaMsg.parentNode.removeChild(cajaMsg);
}
}
function insertAfter(nuevoNodo, nodoExistente) {
if (nodoExistente.nextSibling) {
nodoExistente.parentNode.insertBefore(nuevoNodo, nodoExistente.nextSibling);
} else {
nodoExistente.parentNode.appendChild(nuevoNodo);
}
}