Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/02/2011, 22:42
andhe7
 
Fecha de Ingreso: diciembre-2010
Mensajes: 13
Antigüedad: 14 años
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...