Foros del Web » Programando para Internet » Javascript »

Validación Formulario Javascript no intrusivo

Estas en el tema de Validación Formulario Javascript no intrusivo en el foro de Javascript en Foros del Web. Buenas tardes, Estoy creando una simple validación para comprobar los campos que están vacíos y mostrar un error de campo obligatorio cuando este campo no ...
  #1 (permalink)  
Antiguo 21/06/2009, 05:23
 
Fecha de Ingreso: julio-2006
Mensajes: 1
Antigüedad: 17 años, 9 meses
Puntos: 0
Busqueda Validación Formulario Javascript no intrusivo

Buenas tardes,

Estoy creando una simple validación para comprobar los campos que están vacíos y mostrar un error de campo obligatorio cuando este campo no se rellene.

Esta validación la estoy haciendo con javascript no intrusivo accesible.

problema que me surge es el siguiente:

Actualmente funciona la validación pero muestra el error cada vez que quito el foco del campo (onblur) y elimina toda la lista de errores (ul) que ha creado el JS cuando relleno el campo.

La idea es que no se repita el error cada vez que se compruebe si está vacío, y en el caso de que rellene el campo el error que se ha creado desaparezca. Es decir, que elimine el li que ha creado para meter el error cuando estaba vacío, y no borrar todo el UL como actualmente hace.

Adjunto un enlace dónde está el formulario que estoy haciendo, desde ahí mismo podéis ver el código:

HTML
Código:
<h1>Iniciar sesión</h1>
<div class="formulario login" id="formulario">
	<div id="errores"></div>
	<form id="form_contacto" action="#" method="post">
		<label for="usuario">
			<span>Usuario:</span>
			<input type="text" id="usuario" />
		</label>
		<label for="contrasena">
			<span>Contraseña:</span>
			<input type="password" id="contrasena" />
		</label>
		<div class="btnSubmit">
			<input type="reset" value="Borrar datos" />
			<input type="submit" value="Enviar" />
		</div>
	</form>
</div>
JAVASCRIPT
Código:
window.onload = function(){
	var elemInput = document.getElementById('formulario').getElementsByTagName('label');
	for(var i = 0; i < elemInput.length; i++){
		var elem = elemInput[i].getElementsByTagName('input');
		for(var j = 0; j < elem.length; j++){
			elem[j].onblur = validar;
		}
	}
}
function validar(){		
	var nombreCampo = this.id;
	var campoValor = document.getElementById(nombreCampo).value;
	var lista = document.getElementById('lista');
	if(campoValor == ""){
		var txtVacio = "Debe introducir el campo "+nombreCampo+".";
		var divErrores = document.getElementById('errores');
		divErrores.className = 'errores';
		var elemUL = document.createElement("ul");
		elemUL.id = 'lista';
		var elemLi = document.createElement("li");
		elemLi.appendChild(document.createTextNode(txtVacio));
		
		if (!document.getElementById('lista')){								
			divErrores.appendChild(elemUL);		
			elemUL.appendChild(elemLi);
					
		}else{
			var lista = document.getElementById('lista');
			lista.appendChild(elemLi);
					
		}
	}
	if(campoValor != ""){			
		padre = lista.parentNode;
		padre.removeChild(lista);
	}
}
Gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:28.