Foros del Web » Programando para Internet » Javascript »

Control de formulario no se ejecuta

Estas en el tema de Control de formulario no se ejecuta en el foro de Javascript en Foros del Web. Hola una vez más!! Tengo un formulario con dos controles y ninguno parece funcionar. Por una parte, en varios campos, se comprueba que al pulsar ...
  #1 (permalink)  
Antiguo 29/07/2015, 04:29
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 19 años, 8 meses
Puntos: 8
Control de formulario no se ejecuta

Hola una vez más!! Tengo un formulario con dos controles y ninguno parece funcionar. Por una parte, en varios campos, se comprueba que al pulsar una tecla es un número. Si es un número, lo escribe, si no lo es, no hace nada. Por otra parte, al enviar el formulario, se comprueba que los campos obligatorios tienen valor, que cierto campo no pasa de 100 y que la suma de otros cuatro campos suma 100 exactos (en otros formularios solo se comprueba una de estas condiciones, pero el falla también)
El caso es que no hace caso de nada, en los campos deja escribir cualquier cosa y si le doy al botón de enviar, se envía sin comprobar nada. Alguien tiene idea de porque está pasando esto? He probado en Chrome y en Explorer 11 y en ambos el comportamiento es el mismo.
Os dejo el código por si se me ha pasado algo:

Las dos funciones
Código Javascript:
Ver original
  1. <head>
  2. <script language="javascript">
  3. <!--
  4. function LP_data(){
  5. var key=window.event.keyCode;//codigo de tecla.
  6. if (key < 48 || key > 57){//si no es numero  
  7. window.event.keyCode=0;//anula la entrada de texto.
  8. }}
  9. -->
  10. </script>
  11. <script language="javascript">
  12. function validar(frm) {
  13.  var ret;
  14.  if (frm.f1.value == "" ) || (frm.f2.value == "" ) || (frm.f3.value == "" )  {
  15.   alert('Por favor, rellene todos los campos obligatorios marcados con **');
  16.   ret = false;
  17.  }
  18.   if ( frm.f4.value > 100) {
  19.   alert('El valor de la pregunta P4 debe ser menor o igual que 100');
  20.   ret = false;
  21.  }
  22.   if ( frm.f6_nacional_hogar.value+frm.f6_inter_hogar.value+frm.f6_nacional_contract.value+frm.f6_inter_contract.value != 100) {
  23.   alert('La suma de los cuatro campos de la pregunta P6 debe ser igual a 100');
  24.   ret = false;
  25.  }
  26.  
  27. return ret;
  28. }
  29. </script>

El formulario
Código HTML:
Ver original
  1. <form id="frm" name="frm" method="post" action="f_s1_2.asp"  onsubmit="return validar(this)">

Uno de los inputs
Código HTML:
Ver original
  1. <input name="f1_2" type="text" class="campos_de_texto" id="f1_2"  size="3" maxlength="3" onkeypress="LP_data()"/>
__________________
Vayamos por Partes :: Jack el Destripador
  #2 (permalink)  
Antiguo 29/07/2015, 04:56
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 20 años, 4 meses
Puntos: 1284
Respuesta: Control de formulario no se ejecuta

Hola:

En la validación debes integrar las distintas condiciones encerrándolas en otro juego de paréntesis (le primer if...)

Luego usas un nombre: f1_2 pero en el código javascript se ve f1, f2, f3...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 29/07/2015, 05:24
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 19 años, 8 meses
Puntos: 8
Respuesta: Control de formulario no se ejecuta

Ok, lo de los paréntesis ya está cambiado y esa parte ya funciona, muchísimas gracias Caricatos!!! En cuanto al nombre de los campos, está bien, justamente he colocado el f1_2 como ejemplo de la llamada a la función de comprobar que es numérico, pero no es uno de los obligatorios, por eso no sale en la función de comprobar el formulario.
Ahora solo me falta la parte de que reconozca que se está pulsando un número, eso sigue sin hacerlo!!
__________________
Vayamos por Partes :: Jack el Destripador
  #4 (permalink)  
Antiguo 29/07/2015, 05:30
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 19 años, 8 meses
Puntos: 8
Respuesta: Control de formulario no se ejecuta

Y otra cosilla más. He comprobado que aunque los cuatro campos sumen 100, me sigue saltando el aviso de que no están sumando 100. He probado a poner en el alert lo mismo que en el if, y en lugar de sumar, parece que está concatenando los valores, es decir, si pongo 5 en los cuatro campos, lo que me muestra en el alert es 5555!! Cómo debería ponerlo para que lo haga bien?

Esto es lo que he puesto para ver que está haciendo:

Código Javascript:
Ver original
  1. if ( frm.f6_nacional_hogar.value+frm.f6_inter_hogar.value+frm.f6_nacional_contract.value+frm.f6_inter_contract.value != 100) {
  2.     alert(frm.f6_nacional_hogar.value+frm.f6_inter_hogar.value+frm.f6_nacional_contract.value+frm.f6_inter_contract.value);
  3. //  alert('La suma de los cuatro campos de la pregunta P6 debe ser igual a 100');
  4.   ret = false;
  5. }
__________________
Vayamos por Partes :: Jack el Destripador
  #5 (permalink)  
Antiguo 29/07/2015, 05:36
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 19 años, 8 meses
Puntos: 8
Respuesta: Control de formulario no se ejecuta

Cita:
Iniciado por angel_dope Ver Mensaje
Y otra cosilla más. He comprobado que aunque los cuatro campos sumen 100, me sigue saltando el aviso de que no están sumando 100. He probado a poner en el alert lo mismo que en el if, y en lugar de sumar, parece que está concatenando los valores, es decir, si pongo 5 en los cuatro campos, lo que me muestra en el alert es 5555!! Cómo debería ponerlo para que lo haga bien?

Esto es lo que he puesto para ver que está haciendo:

Código Javascript:
Ver original
  1. if ( frm.f6_nacional_hogar.value+frm.f6_inter_hogar.value+frm.f6_nacional_contract.value+frm.f6_inter_contract.value != 100) {
  2.     alert(frm.f6_nacional_hogar.value+frm.f6_inter_hogar.value+frm.f6_nacional_contract.value+frm.f6_inter_contract.value);
  3. //  alert('La suma de los cuatro campos de la pregunta P6 debe ser igual a 100');
  4.   ret = false;
  5. }

Esto ya lo he conseguido resolver con el parseInt, es decir, de la siguiente forma:

Código Javascript:
Ver original
  1. if ( (parseInt(frm.f6_nacional_hogar.value)+parseInt(frm.f6_inter_hogar.value)+parseInt(frm.f6_nacional_contract.value)+parseInt(frm.f6_inter_contract.value)) != 100) {
__________________
Vayamos por Partes :: Jack el Destripador

Etiquetas: control, ejecuta, formulario, funcion, input, valor
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 21:07.