Foros del Web » Programando para Internet » Javascript »

validar grupo de radiosbuttons

Estas en el tema de validar grupo de radiosbuttons en el foro de Javascript en Foros del Web. mm que tal intento validar a un X numero de grupos de radios y no me funciona, necesito verificar que fue seleccionado una opcion de ...
  #1 (permalink)  
Antiguo 08/11/2007, 14:36
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
validar grupo de radiosbuttons

mm que tal intento validar a un X numero de grupos de radios y no me funciona, necesito verificar que fue seleccionado una opcion de cada grupo y no puedo hacer que cuando se cargue la pagina ya aparesca uno seleccionado por default, por favor, ayuda!!!
__________________
Wow! No se que decir...
  #2 (permalink)  
Antiguo 09/11/2007, 01:40
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: validar grupo de radiosbuttons

Hola:

Me temo que por cada grupo de radios debas recorrer cada elemento y consultar que haya un checked...

<form onsubmit="return chequearRadios(this, 'valor', 'tipo')"...

<input type="radio" name="valor" value="100" />
<input type="radio" name="valor" value="200" />
<input type="radio" name="valor" value="300" />
<input type="radio" name="valor" value="500" />

<input type="radio" name="tipo" value="A" />
<input type="radio" name="tipo" value="B" />
<input type="radio" name="tipo" value="C" />
<input type="radio" name="tipo" value="D" />

Y la función:

function chequearRadios() {
function chek(f, g) {
var vale = false;
for (var i = 0, grupo = f[g], total = grupo.length; i < total; i ++)
vale = vale | grupo[i].checked;
return vale;
}

var vale = true;
ar = chequearRadios.arguments;
for (i = 1, formu = ar[0];grup = ar[i], i < ar.length; i ++)
vale = vale & check(formu, grup);
return vale;
}

Lo puse a pelo, y me parece que algo rebuscado... pruébalo y nos cuentas.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 09/11/2007, 01:43
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: validar grupo de radiosbuttons

co el atributo checked en el input le dices que ese item este activado.

Código HTML:
<input type="radio" name="a" value="1" checked />Uno<br />
<input type="radio" name="a" value="2" />Dos<br />
...
hace poco salio un tema parecido.
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #4 (permalink)  
Antiguo 09/11/2007, 09:40
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: validar grupo de radiosbuttons

hey gracias caricatos, la probare y ZiTAL, como es para un trabajo de encuestas pues el cliente no quiere que aparescan las opciones seleccionadas por que puede hacer que el usuario guarde la encuesta asi como esta sin responder... pero gracias por el comentario....
__________________
Wow! No se que decir...
  #5 (permalink)  
Antiguo 09/11/2007, 14:12
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: validar grupo de radiosbuttons

hola caricatos, apenas pude probar tu ejemplo, pero no entiendo varias cosas de tu funcion, parece ser que se esta anidando una funcion dentro de otra y n entiendo otra cosa por hay, me la puedes explicar?
__________________
Wow! No se que decir...
  #6 (permalink)  
Antiguo 12/11/2007, 03:23
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: validar grupo de radiosbuttons

Cita:
Iniciado por zyon Ver Mensaje
hola caricatos, apenas pude probar tu ejemplo, pero no entiendo varias cosas de tu funcion, parece ser que se esta anidando una funcion dentro de otra y n entiendo otra cosa por hay, me la puedes explicar?
Hola:

Acabo de probar el código y tenía un par de fallicos... te paso el código corregido:

Código:
function chequearRadios() {
  function chek(f, g) {
    var vale = false;
    for (var i = 0, grupo = f[g], total = grupo.length; i < total; i ++)
      vale = (vale || grupo[i].checked);
    return vale;
  }

var vale = true;
ar = chequearRadios.arguments;
for (i = 1, formu = ar[0]; grup = ar[i], i < ar.length; i ++)
vale = (vale && chek(formu, grup));
return vale;
}
Lo del anidamiento, no es eso exactamente, es una función interna de otra función, no se usa mucho porque produce el mismo resultado que si estuviera fuera (en el caso "chek"), pero de esa forma puedes definir una función con el mismo nombre fuera, que sería "global", y la interna sólo funcionaría en su ámbito... si sólo va a usarse en esa función, ayudaría a no dispersar mucho el código.

Sobre la función en sí, se trata de poner como parámetros, el primero el propio formulario para referenciarlo internamente, y detrás la lista de campos "radio". El funcionamiento es muy sencillo, se considera en principio que va a pasar la validación, y se actualiza con la operación lógica true por cada grupo de radios que pase la validación (la función check(formulario, grupo)), entonces si un grupo no la pasa la operación será true && false = false, y como resultado, no pasa la validación...

La validación de los grupos es parecida en la teoría, pero cambiando la verificación... empezamos considerando que no hay ninguno checked (v = false), y por cada uno se hace la operación lógica OR de tal forma que si ninguuno está checked seguirá false, pero cuando uno es checked, el grupo valida.

Las operaciones lógicas no son muy difíciles de comprender.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 12/11/2007, 10:39
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: validar grupo de radiosbuttons

Hola caricatos, muchas gracias por responder, pero n me funciona a mi, no entiendo que pasa, tengo 50 grupos de radios enmi forma, y en tu código la variable de 'ar.length' me da 0, osea que no encintro ninguno...
__________________
Wow! No se que decir...
  #8 (permalink)  
Antiguo 12/11/2007, 14:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: validar grupo de radiosbuttons

Hola:

Un ejemplo completo y funcionando:

Código:
<html>
<head>
<script>
function chequearRadios() {
  function chek(f, g) {
    var vale = false;
    for (var i = 0, grupo = f[g], total = grupo.length; i < total; i ++)
      vale = (vale || grupo[i].checked);
    return vale;
  }

var vale = true;
ar = chequearRadios.arguments;
for (i = 1, formu = ar[0]; grup = ar[i], i < ar.length; i ++)
vale = (vale && chek(formu, grup));
return vale;
}

</script>
</head>
<body>


<form onsubmit="return chequearRadios(this, 'valor', 'tipo')" action="javascript: alert('Ok')" >

<input type="radio" name="valor" value="100" />
<input type="radio" name="valor" value="200" />
<input type="radio" name="valor" value="300" />
<input type="radio" name="valor" value="500" />
<br />
<input type="radio" name="tipo" value="A" />
<input type="radio" name="tipo" value="B" />
<input type="radio" name="tipo" value="C" />
<input type="radio" name="tipo" value="D" />

<button type="submit">pinchar</button>
</form>
</body>
</html>
Fíjate que la validación se hace pasando parámetros (por lo visto no lo estás haciendo)... el primero es el mismo formulario y los siguientes son los campos para validar... teniendo tantos tal vez te interese otra cosa, pero con esta semilla, supongo que no tendrás problemas...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 13/11/2007, 07:40
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: validar grupo de radiosbuttons

Ok, muchas gracias, ya lo resolvi de un modo diferente, fui almacenando unos valores y al final busco en ese arreglo los valores, si no esta alguno mando un mensaje...pero hcecare tu ejemplo y tratare de adaptarlo, tengo una idea de como hacerlo...gracias de nuevo....
__________________
Wow! No se que decir...
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.