Foros del Web » Programando para Internet » Javascript »

Anular Submit Correctamente

Estas en el tema de Anular Submit Correctamente en el foro de Javascript en Foros del Web. Saludos a todos, les comento mi problema: Tengo un formulario para que ingresen un Email y se puedan suscribir a novedades, pero mi problema es ...
  #1 (permalink)  
Antiguo 23/11/2008, 17:21
Avatar de carlospc  
Fecha de Ingreso: noviembre-2008
Ubicación: Huancayo/Perú
Mensajes: 240
Antigüedad: 16 años
Puntos: 12
Exclamación Anular Submit Correctamente

Saludos a todos, les comento mi problema:

Tengo un formulario para que ingresen un Email y se puedan suscribir a novedades, pero mi problema es si ingresan otra cosa que no sea un email tambien se envia, para lo cual estoy validando con expresiones regulares el email, y quiero que si no cumple con la expresion... que se anule el Submit del formulario, pero no me funciona, y de todas maneras se envia el formulario, cual creen que sea la causa, ahi les pongo mi codigo y de antemano muchas gracias...

Código HTML:
<script>
 function validarEmail(e,valor) {
 if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor))e.returnValue = false;
 }
</script>
<form name="Fomulario" method="post" action="suscribir.php" onSubmit="return validarEmail(event, this.form.mailsus.value);">
<input type="text" name="mailsus" id="mailsus">
<input type="submit" name="Suscribir" value="Suscribirse">
</form> 
  #2 (permalink)  
Antiguo 23/11/2008, 18:33
 
Fecha de Ingreso: octubre-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 2
Respuesta: Anular Submit Correctamente

No se si esto sea correcto pero creo que lo pondría mas o menos así:

function validar(...)
{
if (...) return false;
else return true;
}

y en onsubmit:
onsubmit = "if (validar() == true) this.submit();"

Significa que el formulario solo se envia si la funcion validar retorna "true"

...
Se puede colocar directamente en la funcion asi se reduce el codigo:

validar(...)
{
if (...) el_formulario.submit();
}

onsubmit="validar()"

Prueba si eso te sirve.
  #3 (permalink)  
Antiguo 23/11/2008, 20:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Anular Submit Correctamente

En tu código si la expresión regular es correcta (no lo he probado), lo único que hay que cambiar el e.returnValue = false; por return false;

P.S.: eso de returnValue = false es solo para Internet Explorer, para otros navegadores es event.preventDefault(), aunque en este caso no es necesario, ya que el evento lo estás colocando directamente en el código HTML.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 23/11/2008, 22:43
Avatar de carlospc  
Fecha de Ingreso: noviembre-2008
Ubicación: Huancayo/Perú
Mensajes: 240
Antigüedad: 16 años
Puntos: 12
Respuesta: Anular Submit Correctamente

Amigo, nada... no se porque, pero no obdece, la expresion regular si funciona, aunque no correctamente en el sentido que no permite subodminios con mas de 3 caracteres (info, name, etc) pero es correcto, aun asi el formulario se sigue enviando, y no se que hacer, o que otra alternativa me sugieren ya voy unos 2 dias enteros aprox con esto.... Gracias por soportarme.. :D
  #5 (permalink)  
Antiguo 24/11/2008, 17:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Anular Submit Correctamente

¿Podrías mostrar cómo trataste de implementar lo que te comenté en el mensaje anterior? Así podremos decirte por qué falla.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 24/11/2008, 22:56
Avatar de carlospc  
Fecha de Ingreso: noviembre-2008
Ubicación: Huancayo/Perú
Mensajes: 240
Antigüedad: 16 años
Puntos: 12
Respuesta: Anular Submit Correctamente

Esta implementado de la siguiente manera:

Código HTML:
<script>
 function validarEmail(e,valor) {
 if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor))return = false;
 }
</script>

<form name="form" method="post" action="suscribir.php" onSubmit="return validarEmail(event, this.form.mailsus.value);">
<input type="text" name="mailsus" id="mailsus"><br>
<input type="submit" name="Suscribir" value="Suscribirse">
</form> 
Y aun asi el submit se llega a ejecutar.... asi en el Text le ingrese solo una palabra o lo deje vacion, llega a activarse el Submit y la suscripcion se llega a realizar....
  #7 (permalink)  
Antiguo 24/11/2008, 23:37
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Anular Submit Correctamente

Hola:

Parece que lo haces al revés... creo que es melor:

function validarEmail(valor) {
return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor);
}

Y como lo tienes, no sirve de nada el parámetro del evento...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 26/11/2008, 08:10
Avatar de carlospc  
Fecha de Ingreso: noviembre-2008
Ubicación: Huancayo/Perú
Mensajes: 240
Antigüedad: 16 años
Puntos: 12
Respuesta: Anular Submit Correctamente

Saludos a todos, disculpen lo molestoso, pero aun no me funciona... el script: lo acabo de probar como Caricatos me lo sugirio, no me funciono, crei que se le habian olvidado los parentesis, los puse y aun asi no funciona, les pongo como lo tengo ahora, haber si alguien me puedar dar una mano....

Código HTML:
<script>
 function validarEmail(valor) {
 return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor));
 }
</script>

<form name="form" method="post" action="suscribir.php" onSubmit="return validarEmail(this.form.mailsus.value);">
<input type="text" name="mailsus" id="mailsus">
<input type="submit" name="Suscribir" value="Suscribirse>
</form> 
O creen que tengan algo que ver los exploradores, los estoy probando con Firefox, IE7 y Chrome de Google y aun asi nada, se sigue ejecutando el Submit en todos los casos... Una ayudadita porfa.... y gracias de nuevo...
  #9 (permalink)  
Antiguo 26/11/2008, 08:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Anular Submit Correctamente

Hola:

En una página que la validación del email me funciona correctamente, tengo esta expresión regular:

_test_email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
... evidentemente es la misma expresión regular... (lo de los paréntesis, para las expresiones regulares puedes obviarlos...)

Y la parte del chequeo del email es:

Código:
	if (!(_vale_email = _test_email.test(f.email.value)))	{
		_mensaje += (_mensaje == "") ? "" : "\n";
		_mensaje += (f.email.value == "") ? "El email es obligatorio para registrarse." :
						 "El email no pasa la validación.";
	}
Prueba quitando los paréntesis (por decir algo, ya que creo que no debe influir...), y sobre todo fíjate si provoca algún error (si tu navegador tiene consola de errores... o en explorer abajo a la izquierda...)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #10 (permalink)  
Antiguo 26/11/2008, 18:57
Avatar de carlospc  
Fecha de Ingreso: noviembre-2008
Ubicación: Huancayo/Perú
Mensajes: 240
Antigüedad: 16 años
Puntos: 12
Respuesta: Anular Submit Correctamente

Amigo Caricatos:

El codigo que me pasas esta interesante, solo que no entiendo bien en que parte implementarlo, haber si me puedes dar una ayudadita en ese aspecto o si me pudieras decir en que parte esta corriendo tu validacion de Email, para chekearlo al detalle: entendi que tengo que reemplazar el _test_email por toda la expresion regular, pero lo demas como que me perdi, no ubico donde insertar el codigo que me sugieres.... Gracias...
  #11 (permalink)  
Antiguo 27/11/2008, 05:22
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Anular Submit Correctamente

Hola:

Bueno, sin poner más que lo necesario... y adaptándolo a tu código...

<script>
_test_email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
</script>

<form name="form" method="post" action="suscribir.php" onSubmit="return _test_email.test(mailsus.value);">
<input type="text" name="mailsus" id="mailsus">
<input type="submit" name="Suscribir" value="Suscribirse>
</form>

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #12 (permalink)  
Antiguo 06/12/2008, 18:11
Avatar de carlospc  
Fecha de Ingreso: noviembre-2008
Ubicación: Huancayo/Perú
Mensajes: 240
Antigüedad: 16 años
Puntos: 12
De acuerdo Respuesta: Anular Submit Correctamente

Amigo Caricatos

Muy agradecido con tu ayuda, ahora si funciona de maravilla todo, muchas gracias, ahora me toca investigar sobre expresiones regulares por que la expresion con la que estoy trabajando no admite mas de 3 caracteres la parte final del dominio. ejem:([email protected], [email protected], etc)...

Nuevamente Gracias Caricatos.......
  #13 (permalink)  
Antiguo 06/12/2008, 19:17
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 18 años, 1 mes
Puntos: 122
Respuesta: Anular Submit Correctamente

cambia el ultimo tres por un numero mayor, si es que no me equivoco.
__________________
twitter: @imbuzu
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 18:28.