Para lo primero, que muestre
todos los mensajes de error, tienes que quitarle los
return en las validaciones y dejarla al final, de esta forma la funciona realizara todas las validaciones y mostrara los mensajes correspondientes.
Pero habria que saber si hubieron errores o no en las validaciones, entonces, si la primera validación es
false (con error), guardar ese resultado en una variable
resultado1, lo mismo para las demás validaciones, donde habrá una variable
resultado2,
resultado3, etc. que guarde los resultados.
Luego, al terminar todas las validaciones hay que evaluar esos resultado, usando
return(resultado1 && resultado2); donde retornara
false en general si una sola validación dio
false (con error), y de esta forma no se enviara el formulario.
Para ocultar los mensajes, tendrías que agregarle la sentencia
ELSE a las validaciones, realizando la acción contraria, es decir, ocultándola. Y además, asignando
true a la variable de resultado de esa validación.
En resumen, tu código seria:
Código PHP:
<script type="text/javascript">
function validar(frm) {
var resultado1 = true;
var resultado2 = true;
if (frm.pepe.value.length < 4) {
document.getElementById('error').style.visibility = 'visible';
resultado1 = false; // Error
}
else {
document.getElementById('error').style.visibility = 'hidden';
resultado1 = true; // Sin error
}
if (frm.pepe2.value.length < 4) {
document.getElementById('error2').style.visibility = 'visible';
resultado2 = false; // Error
}
else {
document.getElementById('error2').style.visibility = 'hidden';
resultado3 = true; // Sin error
}
return(resultado1 && resultado2);
}
</script>