Foros del Web » Programando para Internet » Javascript »

Formulario con validacion en javascript y evitar envio doble

Estas en el tema de Formulario con validacion en javascript y evitar envio doble en el foro de Javascript en Foros del Web. Hola foro, necesito hacer lo siguiente tengo un formulario donde hago una validacion con javascript de los campos antes de enviar. Código HTML: <script language= ...
  #1 (permalink)  
Antiguo 13/02/2011, 22:42
 
Fecha de Ingreso: diciembre-2010
Mensajes: 13
Antigüedad: 13 años, 11 meses
Puntos: 0
Formulario con validacion en javascript y evitar envio doble

Hola foro, necesito hacer lo siguiente tengo un formulario donde hago una validacion con javascript de los campos antes de enviar.

Código HTML:
<script language="javascript" type="text/javascript">
//	isMail 2.0 by Luciano Callero GUI - Developer
//	Uso: Valida el Mail pasandole como parametro la dir... 
//	Devuelve falso Si no es Correcto ej.: if (isMail('[email protected]')==false){}
//
//Este script y otros muchos pueden
//descarse on-line de forma gratuita
//en El Código: www.elcodigo.com

function vacio(cadena)
  {                                    // DECLARACION DE CONSTANTES
    var blanco = " \n\t" + String.fromCharCode(13); // blancos
                                       // DECLARACION DE VARIABLES
    var i;                             // indice en cadena
    var es_vacio;                      // cadena es vacio o no
    for(i = 0, es_vacio = true; (i < cadena.length) && es_vacio; i++) // INICIO
      es_vacio = blanco.indexOf(cadena.charAt(i)) != - 1;
    return(es_vacio);
  }



// ejemplo validacion formulario
function Validacion(form)
  {
if(vacio(form.plan.value)){
      alert("Debes Seleccionar un PLAN");
    return(false);
}
else if(vacio(form.cedula.value)){
	alert("Falta Documento de Identidad");
	return(false);
}
else if(vacio(form.nombres.value)){
	alert("Falta Nombres");
	return(false);
}
else if(vacio(form.apellidos.value)){
	alert("Falta Apellidos");
	return(false);
}
else if(vacio(form.ciudad.value)){
	alert("Ciudad ?");
	return(false);
}
else if(vacio(form.direccion.value)){
	alert("Direccion ?");
	return(false);
}
else if(vacio(form.telefono.value)){
	alert("Telefonos ?");
	return(false);
}
else if(vacio(form.fe_nacimiento.value)){
	alert("Fecha De Nacimiento ?");
	return(false);
}
else if(vacio(form.expedicion.value)){
	alert("Expedición ?");
	return(false);
}
else if(vacio(form.desde.value)){
	alert("VIgencia ?");
	return(false);
}
else if(vacio(form.hasta.value)){
	alert("Vigencia ?");
	return(false);
}
else if(vacio(form.descripcion.value)){
	alert("Debes Seleccionar un plan");
	return(false);
}
else
      //sustituir esta linea por return(true) para hacer el submit de un formulario real
    //  alert("Muchas Gracias!!!");
    return(true);
  }
</script> 
ese es el codigo javascript para la validacion y en la cabezera del formulario tengo lo siguiente.

Código HTML:
<form name="form1" method="get" action="enviar.php" onSubmit="return Validacion(this)"> 
al darle enviar hace la validacion y lo envia es caso de que los campos esten llenos, si alguno esta vacio lanza una alerta y no envia el formulario, ahora necesito evitar el envio doble del formulario y las opciones que e visto utilizan en onSubmit= por ejemplo

onSubmit=Submit_seguro(this)

con este codigo en javascript

Código HTML:
<script language="javascript" type="text/javascript">
/*
	Hace el submit, desactiva el boton de submit
	y reaigna la funcion JavaScript de envio a una funcion dummy
	para evitar el reenvio en caso de que el navegador no soporte
	la deshabilitacion del boton submit
*/
function Submit_seguro( formulario ) {
	for (i=1; i < formulario.elements.length; i++) {
		//deshabilita el boton de submit
		if (formulario.elements[i].type == 'submit') {
			formulario.elements[i].disabled = true
		}
	}
	//envia el formulario
	formulario.submit()
	
	//reasinga la funcion de envio a una funcion dummy
	Submit_seguro = Submit_off
	return false
}

/*
	Esta funcion no hace nada
	Sirve para evitar el reenvio del formulario
*/
function Submit_off( formulario ) {
    return false
}
</script> 

Funciona correcto si lo pongo en la cabezera pero no me hace la validacion que necesito alguien me puede ayudar de como colocarlos dos ?

Código HTML:
<form name="form1" method="get" action="enviar.php" onSubmit="return Validacion(this); return Submit_segurothis)"> 
pero no me funciona o alguien me puede decir como hago el la validacion y evito el envio doble ?? Gracias de antemano...
  #2 (permalink)  
Antiguo 14/02/2011, 00:40
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Formulario con validacion en javascript y evitar envio doble

No he leído el comentario entero porque voy con prisa pero en la validación del form estás enviándolo (form.submit()).
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 14/02/2011, 06:15
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Formulario con validacion en javascript y evitar envio doble

el punto de evitar el doble envío es que si el formulario se demora y el usuario se tensa, no permitir que sea enviado de nuevo. para controlar esta situación no es necesario una función, puedes usar un contador
f
Cita:
unction fnc() }
var contador=0;
if(contador!=0) {
alert('se está enviando')
return false
}
// resto de validaciones
else
contador++;
return true;
}

Etiquetas: doble, envio, evitar, formulario, validar
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 05:01.