Foros del Web » Programando para Internet » Javascript »

Cosa curiosa con formulaio

Estas en el tema de Cosa curiosa con formulaio en el foro de Javascript en Foros del Web. Hola, me pasa una cora muy curiosa en un formulario y como no, no me funciona. Tengo un campo de texto que al hacer click ...
  #1 (permalink)  
Antiguo 17/07/2003, 11:50
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Cosa curiosa con formulaio

Hola, me pasa una cora muy curiosa en un formulario y como no, no me funciona.

Tengo un campo de texto que al hacer click en un botón, llama a la función calcula() y devuelve un número (no le paso ningún parámetro). Bien la función "funciona". Luego tengo un botón que mira si los campor de texto del formulario están vacíos y si lo están avisa.
El problema es este:

Cuando le doy al botón de enviar datos sin rellenar ninguno muestra el cuadro diciendo que faltan campos, pero si directamente le doy al botón de calcular sin rellenar ningún campo y luego le doy al botón de enviar el formulario, lo envía y el resto de los campos están vacíos.

Aquí os pongo el código de los scripts de calcular y el que comprueba el formulario:

function calcula(){
var a, b, c, result
a=parseFloat(form1.SelAnnos.value);
a=a*12;
b=parseFloat(form1.txtimporte.value);
c=parseFloat(form1.SelInteres.value);
result=((b*c)+b)/a;
result=Redondeo(result,2);
form1.txtcuota.value=result;
}

function valida_form(){
if (form1.txtnombre.value==""){a1="\n - Nombre";clave=0;}else{a1="";clave=1;}
if (form1.txtapellido1.value==""){a2="\n - 1er Apellido";clave=0;}else{a2="";clave=1;}
if (form1.txtapellido2.value==""){a3="\n - 2º Apellido";clave=0;}else{a3="";clave=1;}
if (form1.txtfijo.value==""){a4="\n - Teléfono Fijo";clave=0;}else{a4="";clave=1;}
if (form1.txtmovil.value==""){a5="\n - Teléfono Móvil";clave=0;}else{a5="";clave=1;}
if (form1.txtcontacto.value==""){a6="\n - Horario de Contacto";clave=0;}else{a6="";clave=1;}
if (form1.txtmail.value==""){a7="\n - Email";clave=0;}else{a7="";clave=1;}
if (form1.selEstado.value=="0"){a8="\n - Estado Civil";clave=0;}else{a8="";clave=1;}
if (form1.txtedad.value==""){a9="\n - Edad";clave=0;}else{a9="";clave=1;}
if (form1.txtdomicilio.value==""){a10="\n - Domicilio";clave=0;}else{a10="";clave=1;}
if (form1.txtcp.value==""){a11="\n - C.P.";clave=0;}else{a11="";clave=1;}
if (form1.txtprovincia.value==""){a12="\n - Provincia";clave=0;}else{a12="";clave=1;}
if (form1.selVivienda.value=="0"){a13="\n - Tipo de Vivienda";clave=0;}else{a13="";clave=1;}
if (form1.txtnomina.value==""){a14="\n - Nómina";clave=0;}else{a14="";clave=1;}
if (form1.txtpagas.value==""){a15="\n - Nº de Pagas";clave=0;}else{a15="";clave=1;}
if (form1.txtingresos.value==""){a16="\n - Ingresos Certificados";clave=0;}else{a16="";clave=1;}
if (form1.txtpension.value==""){a17="\n - Pensión";clave=0;}else{a17="";clave=1;}
if (form1.SelTipo.value=="0"){a18="\n - Tipo de Inmueble";clave=0;}else{a18="";clave=1;}
if (form1.txtimporte.value=="0"){a19="\n - Importe a Financiar";clave=0;}else{a19="";clave=1;}
if (form1.txtentrada.value=="0"){a20="\n - Entrada";clave=0;}else{a20="";clave=1;}
if (form1.txtCausa.value==""){a21="\n - Causa de la Solicitud";clave=0;}else{a21="";clave=1;}
if (form1.txtmetros.value==""){a22="\n - Metros Construidos";clave=0;}else{a22="";clave=1;}
if (form1.SelAnnos.value=="0"){a23="\n - Plazo de Pago";clave=0;}else{a23="";clave=1;}
if (form1.SelInteres.value=="0"){a24="\n - Tipo de Interés";clave=0;}else{a24="";clave=1;}
if (form1.txtcuota.value=="0"){a25="\n - Couta";clave=0;}else{a25="";clave=1;}


if (clave==0){
txt="Faltan los siguientes campos:";
alert(txt+a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a 13+a14+a15+a16+a17+a18+a19+a20+a21+a22+a23+a24+a25 );
}
else
form1.submit();
}

Lo de validar el formulario me funciona, salvo por lo que os he contado antes.
Espero que podais solucionármelo.
Thx.
  #2 (permalink)  
Antiguo 17/07/2003, 13:22
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 21 años, 3 meses
Puntos: 4
Hola knarfy.
El error está en que cuando un campo está vació le asignas un valor único a la variable clave, que es 0:
clave=0 y si no está vacío, le asignas otro valor único. De esa forma, dependerá del último campo que revise la función valida_form para tomar el valor de clave ya sea 0 o 1.
Entonces, lo que tienes que hacer es convertir esos valores en valores variables.
Por ejemplo:
Estableces en principio el valor principal (vañga la redundancia) de clave:

clave = 0;

si el campo está vacío, sumarle 1 al valor de clave:
if (form1.txtnombre.value==""){a1="\n - Nombre";clave+=1;}
y sino, sumarle 0
else{a1="";clave+=0}

y luego le dices que hacer.

Si el valor de clave es distinto que 0 (es que algun campo vacío hay entonces lanzar el alerta):
if (clave !=0) {
txt="Faltan los siguientes campos:";
alert(txt+a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a 13+a14+a15+a16+a17+a18+a19+a20+a21+a22+a23+a24+a25 );
}


Sino (o sea que es igual a 0 porque todos los campos están llenos. por lo tanto, enviame el formulario):
else {
form1.submit();
}


Entonces, te quedaría este script:
Código:
function valida_form(){
clave = 0
if (form1.txtnombre.value==""){a1="\n - Nombre";clave+=1;}else{a1="";clave+=0}
if (form1.txtapellido1.value==""){a2="\n - 1er Apellido";clave+=1}else{a2="";clave+=0}
if (form1.txtapellido2.value==""){a3="\n - 2º Apellido";clave+=1}else{a3="";clave+=0}
if (form1.txtfijo.value==""){a4="\n - Teléfono Fijo";clave+=1}else{a4="";clave+=0}
if (form1.txtmovil.value==""){a5="\n - Teléfono Móvil";clave+=1}else{a5="";clave+=0}
if (form1.txtcontacto.value==""){a6="\n - Horario de Contacto";clave+=1}else{a6="";clave+=0}
if (form1.txtmail.value==""){a7="\n - Email";clave+=1}else{a7="";clave+=0}
if (form1.selEstado.value=="0"){a8="\n - Estado Civil";clave+=1}else{a8="";clave+=0}
if (form1.txtedad.value==""){a9="\n - Edad";clave+=1}else{a9="";clave+=0}
if (form1.txtdomicilio.value==""){a10="\n - Domicilio";clave+=1}else{a10="";clave+=0}
if (form1.txtcp.value==""){a11="\n - C.P.";clave+=1}else{a11="";clave+=0}
if (form1.txtprovincia.value==""){a12="\n - Provincia";clave+=1}else{a12="";clave+=0}
if (form1.selVivienda.value=="0"){a13="\n - Tipo de Vivienda";clave+=1}else{a13="";clave+=0}
if (form1.txtnomina.value==""){a14="\n - Nómina";clave+=1}else{a14="";clave+=0}
if (form1.txtpagas.value==""){a15="\n - Nº de Pagas";clave+=1}else{a15="";clave+=0}
if (form1.txtingresos.value==""){a16="\n - Ingresos Certificados";clave+=1}else{a16="";clave+=0}
if (form1.txtpension.value==""){a17="\n - Pensión";clave+=1}else{a17="";clave+=0}
if (form1.SelTipo.value=="0"){a18="\n - Tipo de Inmueble";clave+=1}else{a18="";clave+=0}
if (form1.txtimporte.value=="0"){a19="\n - Importe a Financiar";clave+=1}else{a19="";clave+=0}
if (form1.txtentrada.value=="0"){a20="\n - Entrada";clave+=1}else{a20="";clave+=0}
if (form1.txtCausa.value==""){a21="\n - Causa de la Solicitud";clave+=1}else{a21="";clave+=0}
if (form1.txtmetros.value==""){a22="\n - Metros Construidos";clave+=1}else{a22="";clave+=0}
if (form1.SelAnnos.value=="0"){a23="\n - Plazo de Pago";clave+=1}else{a23="";clave+=0}
if (form1.SelInteres.value=="0"){a24="\n - Tipo de Interés";clave+=1}else{a24="";clave+=0}
if (form1.txtcuota.value=="0"){a25="\n - Couta";clave+=1}else{a25="";clave+=0}

if (clave !=0) {
txt="Faltan los siguientes campos:";
alert(txt+a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15+a16+a17+a18+a19+a20+a21+a22+a23+a24+a25);
}

else {
form1.submit();
}
}
Solucionado entonces?
Besos!
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #3 (permalink)  
Antiguo 17/07/2003, 13:25
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 21 años, 3 meses
Puntos: 4
Por cierto, debes notar que cuando en tu código decía clave=0 siempre lo reemplacé por clave+=1
Y donde decía clave=1 siempre fue reemplazado por clave+=0
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #4 (permalink)  
Antiguo 18/07/2003, 03:36
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Me has salvado la vida. No había caido de momento en lo de la variable fija, pero supongo que algo habría hecho, pero lo dicho, gracias y mil gracias, no sabes lo que significa esto para mí. ¿Unas cañitas? jajajajaja


Saludos y Thx.
  #5 (permalink)  
Antiguo 18/07/2003, 06:22
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 21 años, 3 meses
Puntos: 4
Guau!! ¿Te salvé la vida?????
Entonces me gané mi primer escalón al cielo!!!!!!!!!

Saludos!!!
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #6 (permalink)  
Antiguo 18/07/2003, 09:26
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
De acuerdo

Te pongo el escalón y la puerta hacia el cielo.
Una pregunta, por qué cuando tenía asignado a la variable clave el valor fijo, los demás campos si funcionaban excepto el que me daba problemas?
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:18.