Foros del Web » Programando para Internet » Javascript »

Problema al validar Formulario segun sus valores

Estas en el tema de Problema al validar Formulario segun sus valores en el foro de Javascript en Foros del Web. Una duda, Tengo un formulario el cual requiero validar con javascript, este formulario proviene de uno previo, el cual puede llegar a recoger hasta 3 ...
  #1 (permalink)  
Antiguo 11/04/2012, 16:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 8 meses
Puntos: 2
Información Problema al validar Formulario segun sus valores

Una duda,

Tengo un formulario el cual requiero validar con javascript, este formulario proviene de uno previo, el cual puede llegar a recoger hasta 3 datos, en este caso la imagen refleja que ha recogido 2 datos (rpta1 y rpta2), las cajas 1 2 y 3 recogen las respuestas del formulario anterior las cual capturo con un POST de php y las imprimo en el value con un echo, bueno el problema es el siguiente, en este formulari o requiero validar el siguiente caso.

Si yo tengo un valor en la caja 1 entonces deberia tener como minimo un valor en la 1.1 o en la 1.2 o en la 1.3. Hasta ahi es facil, pero el problema es cuando tengo valores en la caja 2 tambien tengo que tener un valor como minimo en las otras casjas correspondientes a esa.

Es decir si tengo algun valor en la caja 1 o 2 o 3 necesareamente debo tener minimo un valor en sus sub-cajas (osea 1.1, 1.2 , etc segun sea el caso) para lanzar el submit.

¿Ya he valdiado antes con javascript, pero ahora no se por que no me sale, alguna ayuda?

Dejo la imagen de mi formulario




Última edición por dkoky; 11/04/2012 a las 16:46
  #2 (permalink)  
Antiguo 11/04/2012, 17:58
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años, 1 mes
Puntos: 67
Respuesta: Problema al validar Formulario segun sus valores

Bueno, tú dices que los valores de los campos 1, 2 y 3 vienen desde otro form así que por cuestión de estética yo lo haría de otro manera. Cuando coges las variables en PHP hacer un bucle para que solo ten imprima las opciones necesarios, quiero decir que si antes no marcaste la 3 no aparezca.
Y donde pone 1. rpta1, 2.rpta2 si viene desde otro form yo no lo pondría como un input, lo pondría como texto o un input disabled.

Pon parte de tu código para ver mejor como responderte.
  #3 (permalink)  
Antiguo 11/04/2012, 23:36
 
Fecha de Ingreso: marzo-2010
Mensajes: 25
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Problema al validar Formulario segun sus valores

Cita:
Iniciado por zalito12 Ver Mensaje
Bueno, tú dices que los valores de los campos 1, 2 y 3 vienen desde otro form así que por cuestión de estética yo lo haría de otro manera. Cuando coges las variables en PHP hacer un bucle para que solo ten imprima las opciones necesarios, quiero decir que si antes no marcaste la 3 no aparezca.
Y donde pone 1. rpta1, 2.rpta2 si viene desde otro form yo no lo pondría como un input, lo pondría como texto o un input disabled.

Pon parte de tu código para ver mejor como responderte.

Bueno pues si esta deshabilitado en principio, ademas tu punto de vista es bueno.. ya que podria hacer que aparezca dos nada mas condicionando el tipo de input si es que no tiene valor le puedo poner un hidden en vez de un input, pero la cuestion seria como haria si quedan dos habilitadoas, como validarlos, ya que en otro caso no seran 2 si no que puede variar..
  #4 (permalink)  
Antiguo 12/04/2012, 10:39
 
Fecha de Ingreso: marzo-2012
Ubicación: Madrid
Mensajes: 74
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Problema al validar Formulario segun sus valores

Yo lo entiendo asi:
- los datos forman grupos.
- cada grupo se compone de un dato cabecera y tres datos cuerpo
- un grupo debe considerarse valido si ningun dato esta informado o si tiene informados el dato cabecera y uno (solo uno) de los datos cuerpo.

Asi que tenemos N grupos (N indefinido), numerados de 1 a N. Los datos que componen cada grupo se nombran cabeceraX, cuerpoX1, cuerpoX2, cuerpoX3, con X en el intervalo 1..N

Suponemos "pesos" a cada dato del grupo, el dato cabecera pesa 10, cada dato cuerpo pesa 1.
Para validar un grupo, lo "pesamos". Si un dato esta informado su peso cuenta, en caso contrario suma 0 al peso del grupo.
Asi un grupo será válido si pesa 0 (vacio) u 11 (cabecera + cuerpo).

El formulario sera válido si lo son todos sus grupos.


==================

No sabes a priori cuantos grupos tienes, asi que lo suyo es hacer un bucle, que itera mientras encuentra grupos. Podemos suponer que existe grupo, si existe el dato cabecera.

Para obtener el campo de cada dato puedes emplear "campos = document.getElementsByName(nombreCampo)". Si campos[0] esta definido es que existe.

El codigo queda como:
Código:
function formularioValido() {
  for(var x=1; ; x++) {  // bucle indefinido
    var nombreCabecera = "cabecera" + x;
    var campoCabecera = document.getElementsByName(nombreCabecera);
    
    if (campoCabecera[0]) { // existe grupo X
      if (!grupoValido(x)) {  // comprobar su validez
        return false; // si un grupo no es valido, no es valido el formulario
      }
    } else {
      break; // grupo X no existe, finalizar el bucle
    }
  }
  
  return true;  // todos los grupos resultaron ser validos, el formulario es valido
}


function grupoValido(xGrupo) {
  var pesoDatos = 0;
  
  var nombreCabecera = "cabecera" + xGrupo;
  var campoCabecera = document.getElementsByName(nombreCabecera);  
  
  if (datoInformado(campoCabecera[0])) pesoDatos +=10;
     
  for(var idx=1; idx<=3; idx++) {
    var nombreCuerpo = "cuerpo" + xGrupo + idx;
    alert("Chequeando " + nombreCuerpo);  
    var campoCuerpo = document.getElementsByName(nombreCuerpo);
    if (datoInformado(campoCuerpo[0])) pesoDatos +=1;
  }
     
  return ((pesoDatos==0) || (pesoDatos==11));
}
  

  
function datoInformado(campo) {
 if (campo.value) {
   return true;
 }
 return false;
}

Etiquetas: condicionales, formulario, php, 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 20:15.