Foros del Web » Programando para Internet » Javascript »

Formulario se envia igual sin respetar return "0"

Estas en el tema de Formulario se envia igual sin respetar return "0" en el foro de Javascript en Foros del Web. hola tengo un codigo para validar un registro que me envia el formulario nose porque. Busque por todos lados y no se que peude ser. ...
  #1 (permalink)  
Antiguo 23/07/2014, 12:57
Avatar de mostaza4  
Fecha de Ingreso: octubre-2008
Mensajes: 74
Antigüedad: 11 años, 3 meses
Puntos: 0
Formulario se envia igual sin respetar return "0"

hola tengo un codigo para validar un registro que me envia el formulario nose porque. Busque por todos lados y no se que peude ser. les dejo el codigo javascript para que vean si peuden encontrar algo. En el codigo van a ver 2 funciones. La primera es para la primer parte de registro y funciona genial. La segunda es la que no fucniona ya que me muestra el error si falta el dni pero se envia igual. Es como si el "return 0" no fucnionara. Trate tb con false.
Código:
// JavaScript Document

<!-- ##### valida index    -->
function valida_envia(){
	// Valida nombre
	if(document.formulario1.nombre.value == "") {
		alert("Por favor indique su Nombre");
		document.formulario1.nombre.focus();
		return 0;
	}
	// Valida apellido
	if(document.formulario1.apellido.value == "") {
		alert("Por favor indique su Apellido");
		document.formulario1.apellido.focus();
		return 0;
	}
	// Valida genero
	if(document.formulario1.sexo.selectedIndex == "") {
		alert("Por favor seleccciona tu genero");
		document.formulario1.sexo.focus();
		return 0;
	}
	// Valida genero
	if(document.formulario1.estado.selectedIndex == "") {
		alert("Elige un estado");
		document.formulario1.sexo.focus();
		return 0;
	}

	// envia formulario
	document.formulario1.submit();
	return true;
}
<!-- ##### valida index    -->
function valida_envia2(){
	// Valida dni
	if(document.formulario2.dni.value == "") {
		alert("Por favor indique su DNI");
		document.formulario2.dni.focus();
		return 0;
	}
}
Pueden ver como auqnue le alla sacado al parte de submit el formulario me lo envia igual y no se proque.

Tambien comento que mi forma de llamado a la fucion no es en el form como lei en otros lados sino en vez de un boton tengo un link
Código:
                           <a onClick="valida_envia2()" class="button form-button-submit">Guardar datos</a>
A la primera funcion tambien la llamo de un link pero esa fucniona correctamente. Espero ayuda porque hace 2 dias que vengo tratando de encontrar un error y me estoy dando por vencido
Gracias
  #2 (permalink)  
Antiguo 23/07/2014, 17:36
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 9 años, 9 meses
Puntos: 154
Respuesta: Formulario se envia igual sin respetar return "0"

en el atributo onclick agrega un "return" y cambia "return 0" por "return false"

Código HTML:
Ver original
  1. <a onClick="return valida_envia2()" class="button form-button-submit">Guardar datos</a>
  #3 (permalink)  
Antiguo 23/07/2014, 17:39
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Lima, Perú
Mensajes: 5.433
Antigüedad: 8 años, 3 meses
Puntos: 934
Respuesta: Formulario se envia igual sin respetar return "0"

En la llamada a la función debes de retornar el valor, es decir:

Código HTML:
Ver original
  1. <a onClick="return valida_envia2()" class="button form-button-submit">Guardar datos</a>

Aunque de plano te digo que es pésima idea usar enlaces para hacer algo que tranquilamente podrías realizar con un elemento <input> de tipo submit. Los enlaces se hicieron para enlazar y para anclar, no intentes darle otros usos que no le correspondan.

Saludos

Edito: Se me adelantaron.
__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #4 (permalink)  
Antiguo 23/07/2014, 20:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.596
Antigüedad: 17 años, 10 meses
Puntos: 1279
Respuesta: Formulario se envia igual sin respetar return "0"

Hola:

Me toca la semántica...

0 es un número,
"0" es un texto, y
false es "falso", y es lo que se usa para cancelar acciones entre otras cosas (enlaces, envíos de formularios...)

Reitero que un tag "a" no es semánticamente correcto para enviar formularios, es más, no es accesible.

Siempre debes usar un botón del tipo submit para enviar formularios, y si tu intención es validar o confirmar, debes asociar al evento de envío del formulario (submit) la función que lo pueda cancelar según el caso, retornando (return) falso.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 23/07/2014, 22:09
Avatar de mostaza4  
Fecha de Ingreso: octubre-2008
Mensajes: 74
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Formulario se envia igual sin respetar return "0"

A todos "gracias totales"!!

la verdad uso el enlace porque la template que baje ya venia con eso incorporado y si cambio a un imput pierdo el estilo
Código:
class="button form-button-submit"
Voy a probar lo que dicen y despues digo como salio. Lo de poner FALSE en vez de 0 lo probe pero no probe lo de return en la llamada. Y lo que se me hace realmente raro es que en un formulario anterior que es de la primera funcion valida_envia() el link que uso es igual y ese si anda y se frena en los return 0 no se porque. Recien empiezo con js y les agradezco la ayuda. Voy a probarlo y despues aviso como salio
Saludos
  #6 (permalink)  
Antiguo 23/07/2014, 23:10
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Lima, Perú
Mensajes: 5.433
Antigüedad: 8 años, 3 meses
Puntos: 934
Respuesta: Formulario se envia igual sin respetar return "0"

La clase que usas para aplicar estilos al enlace también puedes colocarla en el botón de submit.

Saludos
__________________
«Laissez faire et laissez passer, le monde va de lui même»

Etiquetas: envia, formulario, funcion, igual, return, select
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 04:33.