Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/04/2015, 15:24
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Formulario que se envía por email, validación en JS y mostrar mensaje

Antes de que se realice el envío de los datos del formulario, debes de cancelar el evento submit, el cual se ejecuta al momento de enviar los datos del formulario a procesarse. Para esto, debes de usar el método preventDefault. Luego de esto, puedes usar ya sea códigos ASCII o expresiones regulares para realizar las validaciones.

Por ejemplo, supongamos que el formulario tuviera un solo campo de texto y deseas que solamente contenga letras del alfabeto inglés (sin eñes, tildes ni diéresis) y espacios, esta sería la manera de hacerlo con expresiones regulares (la cual me parece más conveniente que usar códigos ASCII):

Código HTML:
Ver original
  1. <form id = "id_form">
  2.     Texto: <input type = "text" name = "ejemplo" />
  3.     <input type = "submit" />
  4. </form>

Código Javascript:
Ver original
  1. var form = document.querySelector("#id_form"), //Tomo al formulario
  2.     input = form.ejemplo, //Tomo a la caja de texto
  3.     patron = /^[a-z\s]+$/gi; //Expresión regular de validación
  4.  
  5. form.addEventListener("submit", function(event){ //Cuando se intente enviar los datos
  6.     event.preventDefault(); //Cancelo el envío
  7.  
  8.     if (patron.test(input.value)){ //Si el texto escrito concuerda con la expresión regular
  9.         form.submit(); //Envío los datos del formulario
  10.     }
  11.     else{ //Caso contrario
  12.         input.style.border = "1px red solid"; //Le añado un borde rojo a la caja de texto
  13.     }
  14. }, false);

La expresión regular consiste de lo siguiente:
  • ^: Inicio de la cadena.
  • $: Fin de la cadena.
  • a-z: Rango de letras de la A a la Z.
  • \s: Espacio en blanco.
  • []: Para crear un grupo de caracteres.
  • +: De una a más coincidencias.
  • g: Modificador de patrón para realizar una búsqueda global.
  • i: Modificador de patrón para realizar una búsqueda sin distinguir entre mayúsculas y minúsculas.

En el ejemplo, utilizo el método test para comparar a la expresión regular con el valor de la caja de texto. Este método devuelve true cuando todo concuerda y false cuando no es así. También hay otros métodos que puedes usar, como match, compile y exec.

También puedes realizar validaciones con los atributos pattern y required de HTML5, con los cuales te ahorrarías todas estas líneas de código. La única desventaja está en que si el usuario accede desde un navegador que no tenga soporte para el estándar HTML5, no surtirá efecto y, en ese caso, tendrías que echar mano de JavaScript.

No olvides validar del lado del servidor.

Saludos

EDITO: Como deseas que no se recargue la página al realizar el envío, necesitas realizar una petición asíncrona.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 13/04/2015 a las 15:35 Razón: Explicación de expresiones