Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/09/2015, 15:34
jevy99
 
Fecha de Ingreso: julio-2015
Ubicación: Madrid
Mensajes: 17
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Misma expresion regular para html5 y javascript

Buenas.

En primer lugar, gracias a los dos, pero esto ya es algo personal.

Cita:
En cuanto a la validación que comentas con el e-mail, ¿estás seguro? Acabo de hacer la prueba y no ocurre lo que dices.
La verdad es que ya no estoy seguro de nada, pero ya dije que las pruebas en validadores online me daban correctas, no así al ejecutar mi script. He hecho la siguiente prueba (es un fichero entero para que sólo haya que copiar en un documento html y ejecutarlo):
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  3.     <script type="text/javascript">
  4.         window.onload = function() {
  5.             var campoNombre = document.getElementById('nombre');
  6.             var campoEmail = document.getElementById('email');
  7.             var boton = document.getElementById('boton_enviar');
  8.             var regNombre = new RegExp("[a-zA-zÑñáéíóúüÁÉÍÓÚÜ\s]+", "gi");
  9.             var regEmail = new RegExp("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+){0,}(\.[a-z]{2,4})$", "gi");
  10.  
  11.             boton.onclick = function() {
  12.                 if(/*validarFormato(campoNombre, regNombre)
  13.                         &&*/ validarFormato(campoEmail, regEmail)) {
  14.                     document.getElementById('form').submit();
  15.                 }
  16.             }
  17.         }
  18.  
  19.         function validarFormato(campo, reg) {
  20.             console.log("PRIMERO: " + reg + " .test() " + campo.value + " = " + reg.test(campo.value));
  21.             var cadena = "aaaa@aaaa";
  22.             alert(reg.test(cadena));
  23.             alert(reg.test(cadena));
  24.             alert(reg.test(cadena));
  25.             alert(reg.test(cadena));
  26.             if(reg.test(campo.value)) {
  27.                 console.log("SEGUNDO: solo debería entrar si es true: " + reg + " .test() " + campo.value + " = " + reg.test(campo.value));
  28.                 console.log("true: " + campo.id);
  29.                 document.getElementById('err_' + campo.id + '_valid').style.display = 'none';
  30.                 return true;
  31.             } else {
  32.                 console.log("TERCERO: solo debería entrar si es false: " + reg + " .test() " + campo.value + " = " + reg.test(campo.value));
  33.                 console.log("false: " + campo.id);
  34.                 document.getElementById('err_' + campo.id + '_valid').style.display = 'block';
  35.                 return false;
  36.             }
  37.         }
  38.     </script>
  39.     <style type="text/css">
  40.         .label_error {
  41.             color: #f00;
  42.             display: none;
  43.         }
  44.     </style>
  45.     <title>prueba</title>
  46. </head>
  47.     <form id="form" method="post" action="#">
  48.         <label for="nombre">Nombre</label><br />
  49.         <input id="nombre" name="nombre" type="text" required="required" pattern="[a-zA-zÑñáéíóúüÁÉÍÓÚÜ\s]+" title="Sólo se permiten letras" maxlength="50" data-patron="1" /><br />
  50.         <label id="err_nombre_valid" class="label_error">Este campo sólo admite letras</label>
  51.  
  52.         <label for="email">Email</label><br />
  53.         <input id="email" name="email" type="text" required="required" pattern="^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+){0,}(\.[a-z]{2,4})$" title="Dirección de correo electrónico válida" data-patron="0" /><br />
  54.         <label id="err_email_valid" class="label_error">Introduce un email válido</label>
  55.  
  56.  
  57.         <input id="boton_enviar" type="submit" title="Enviar" value="Enviar" />
  58.     </form>
  59. </body>
  60. </html>

Y resulta que cada vez que hace el test(), si tiene que dar true, los valores se alternan.
Es decir, que si el patrón debe dar false, va a dar false todo el rato, pero si debe dar true, cada vez par que ejecute el test() da false.
Fíjate de todas formas en que alert(reg.test("aaaa@aaaa")); da true como primer resultado.

No entiendo nada.

A, y por cierto, ya me fijé en que me dabas un enlace, pero tampoco me sirvió. Gracias de todas formas.

Un saludo;