A ver vamos a ordenarlo un poco, hay varias formas de hacer esto
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="content-type" content="text/html; charset=utf-8" />
/*<![CDATA[*/
label{
width: 150px;
display: inline-block;
}
/*]]>*/
<script type="text/javascript">
function validar(){
// menos el de email. limpiamos los campos con la funcion limpiar()
var nombre = limpiar(document.getElementById('nombre').value);
var email = document.getElementById('email').value;
var asunto = limpiar(document.getElementById('asunto').value);
var mensaje = limpiar(document.getElementById('mensaje').value);
var formato = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; // expresion para validar email
if(nombre == ""){
alert('Ingrese su nombre')
return false; // devolvés false si hay error
}
var v_email = formato.test(email);
if((v_email != true)||(email == "")){ // test() devuelve true solo si se verifica la regExp
alert('Email no válido');
return false;
}
if(asunto == ""){
alert('Ingrese el asunto')
return false;
}
if(mensaje == ""){
alert('Ingrese el mensaje')
return false;
}
/// Si no hubo ningún error, el form se procesa y se envía aal action del form
alert('gracias ' + nombre);
}
function limpiar(valor){
var valor_campo = valor.replace(/^\s+/g,'').replace(/\s+$/g,'');// limpias espacios en blanco al inicio y final del nombre
return valor_campo;
}
<form action="#" onsubmit="return validar();"> <label for="nombre">Nombre:
</label><input type="text" value="" id="nombre" name="nombre" /><br /> <label for="email">Email:
</label><input type="text" value="" id="email" name="email" /><br /> <label for="asunto">Asunto:
</label><input type="text" id="asunto" name="asunto" /><br /> <label for="mensaje">Mensaje:
</label><input type="text" id="mensaje" name="mensaje" /><br /> <input type="submit" value="enviar" />
Asi te debería funcionar
Saludos