Foros del Web » Programando para Internet » Javascript »

validar radiogroups dinamicos

Estas en el tema de validar radiogroups dinamicos en el foro de Javascript en Foros del Web. Hola foro: tengo un problemilla aqui. Tengo una forma que es un cuestionario, en ella muestro un grupo de radios para cada pregunta de mi ...
  #1 (permalink)  
Antiguo 18/12/2004, 15:46
Avatar de lorecasas  
Fecha de Ingreso: noviembre-2003
Mensajes: 126
Antigüedad: 20 años, 5 meses
Puntos: 0
validar radiogroups dinamicos

Hola foro:

tengo un problemilla aqui. Tengo una forma que es un cuestionario, en ella muestro un grupo de radios para cada pregunta de mi cuestionario, como tengo 20 preguntas, tengo 20 radiogroups, cada uno con 7 opciones radio, su valor es del 1 al 7 segun el que escoga, para hacerlo dinamico, lo hice asi:

$num_pre se recorre en un for y va del 1 al 20
$tipo_res tiene un numero del 1 a al 7

<input type="radio" name="RadioGroup<?php echo $num_pre ?>" value="<?php echo $tipo_res ?>">

el problema ahora es que tengo que validar que en todos los radiogroups haya al menos un radio seleccionado, he intentado de muchas formas pero no me sale

necesito una funcion que me valide que todos radiogroups tengan 1 radio seleccionado al menos, si todos tienen uno, envie la forma, sino, que muestre un alert.

No soy muy conocedora de javascript, ojala alguien pueda ayudarme.

Atte. Lore
__________________
Lorena ;-)
  #2 (permalink)  
Antiguo 19/12/2004, 06:13
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Puedes crear en el head un script que sea:
Código HTML:
<script>
	control=new Array(20);
	function sumar(esto){
	control[esto]=true;
	}
	function probar(){
	faltan="";
	for(a=0;a<control.length;a++){
	if(control[a]!=true){
	faltan+=a+" ";
	}
	}
	if(faltan!=""){
	alert("Por favor conteste las siguientes preguntas:\n\n"+faltan+"\n\nque se ha dejado sin contestar");
	return false;}
	}
	</script> 
Y modificar el código del input así:
Código PHP:
<input type="radio" onclick="sumar(<?php echo $num_pre ?>)" name="RadioGroup<?php echo $num_pre ?>" value="<?php echo $tipo_res ?>">
Y por último en la etiqueta form añadir:
Código HTML:
<form onsubmit="return control()" ...
No lo he podido probar, dime si funciona, y si no lo hace dime el error que sale.

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 19/12/2004, 09:11
Avatar de lorecasas  
Fecha de Ingreso: noviembre-2003
Mensajes: 126
Antigüedad: 20 años, 5 meses
Puntos: 0
Exclamación errorcito

Hola Karlankas:

Gracias por ayudarme, ya lo probe y me sale el siguiente error al darle submit a la forma:

'El objeto no acepta esta propiedad o metodo.'




buaaaaa
__________________
Lorena ;-)
  #4 (permalink)  
Antiguo 19/12/2004, 12:42
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola lorecasas

Creo que, en el código de KarlanKas donde dice:

<form onsubmit="return control()" ...

ha querido decir:

<form onsubmit="return probar()" ...

Un errorcillo debido al viaje intergaláctico que ha tenido que sufrir el código.

Saludos,
  #5 (permalink)  
Antiguo 19/12/2004, 13:22
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Gracias Javier! Eso era!

Es lo que pasa por meter tanta variable...

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #6 (permalink)  
Antiguo 19/12/2004, 13:44
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 19 años, 8 meses
Puntos: 5
Hola lorecasas, JavierB , KarlanKas.
Envio otra forma de validar los grupos de radio.
Código PHP:
<html>
<
head>
<
title>Untitled</title>
</
head>
<
script language=JavaScript type=text/javascript>
<!--
function 
send_form(current_form){
// guardamos el nombre de grupo de radios o el primer radio de un grupo sin seleccionar
// para devolverle el foco

var radio_group ""
var ok_form 1
    
for(var ctr ctr current_form.lengthctr++){
    
// comprobamos que el campo es radio y que nombre de grupo de radio
     
if(current_form[ctr].type == "radio" && current_form[ctr].name != radio_group){
            
//comprobamos si tiene marcado un radio en el grupo
            
if(check_radio(eval("current_form." current_form[ctr].name))){
              
// Si no tiene selecionado ningun radio rompemos el bucle
              // y asignamos 0 a ok_form
              
ok_form--
              
// guardamos el radio para asignar el foco
              
radio_group current_form[ctr]
              break
            }
            
// Si hemos llegado aquí asignamos el nombre del grupo 
            // para buscar en el siguiente grupo
            
radio_group current_form[ctr].name
        
}
    }
 if(
ok_form){
   
     
current_form.submit()
 }
 else{
   
alert("Por favor, complete el cuestionario.")
   
radio_group.focus()
 }
}
// esta funcion comprueba el grupo  de radio
function check_radio(radio_group){
  
// comprobamos que en el grupo de radio haiga uno seleccionado
  
for(var ctr ctr radio_group.lengthctr++){
    if(
radio_group[ctr].checked){
     
// Si hay uno selecionado
         
return false
    
}
  }
        
// Si no hay ninguno seleccionado
      
return true
}
//-->
</script>

<body>
<form name="form1" action="formulario.php">
Grupo 1<br>
<input type="radio" name="group1"  value="g1_1"/><br>
<input type="radio" name="group1"  value="g1_2"/><br>
<input type="radio" name="group1"  value="g1_3"/><br>
<br>
Grupo 2 <br>
<input type="radio" name="group2" value="g2_3"/><br>
<input type="radio" name="group2" value="g2_3"/><br>
<input type="radio" name="group2" value="g2_3"/><br>
<input type="button" value="Enviar" onclick="send_form(this.form)" >

</form>
</body>
</html> 
Saludos
  #7 (permalink)  
Antiguo 19/12/2004, 21:55
Avatar de lorecasas  
Fecha de Ingreso: noviembre-2003
Mensajes: 126
Antigüedad: 20 años, 5 meses
Puntos: 0
gracias me sirvieron!!

Hola Karlankas, JavierB y kepawe:

Gracias, me sirvio mucho, las soluciones estan muy bien y quedo perfecto!!!

Son ustedes expertos , muchas gracias!!

Atte. Lorena
__________________
Lorena ;-)
  #8 (permalink)  
Antiguo 19/12/2004, 21:57
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 21 años, 11 meses
Puntos: 7
Muy interesante codigo, kepawe. Y queda mejor aun si envias el grupo de botones de radio como parametro adicional a la funcion...
  #9 (permalink)  
Antiguo 06/02/2007, 17:19
 
Fecha de Ingreso: febrero-2007
Mensajes: 3
Antigüedad: 17 años, 2 meses
Puntos: 0
Sonrisa Re: validar radiogroups dinamicos

Hola chicos!
Yo integré a mi formulario la validación de : "kepawe", pero pasa lo siguiente:
que si no contesto nada en el formulario me sale la alerta y una vez que le doy aceptar se procesa de inmediato la forma así vacía....

creo que se debe a que debería de haber un comando como:
function validate_form() {
validity = true;

y en el:
<input type="submit" value="Enviar" onclick="validate_form() ">

Porque la validación de "Kepawe", tiene:
<input type="submit" value="Enviar" onclick="send_form(this.form)">

será que por eso aunque le das aceptar a la alerta de inmediato se procesa el formulario? debería de quedarse el formulario estatico en lo que contestas los campos que faltan de contestar no?

como no se programar scripts, alguien me podría ayudar para ver como se le integra algo con un validate form a la validacion propuesta por "kepawe"??

muchas gracias por su ayuda!
  #10 (permalink)  
Antiguo 07/02/2007, 01:36
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 radiogroups dinamicos

Hola:

La verdad es que reavivar un tema de hace más de 2 años no me parece buena idea, pero ya puestos te comento unas cosillas...

Una "buena validación" son de la forma que expuso KarlanKas (¡Hola !) en su primera participación... o sea <form onsubmit="return validar(this)"...

El this ayuda a reutilizar el sistema validador en distintos formularios y permite referenciar más fácilmente los elementos del form...

Prueba usando esa estructura y nos cuentas...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 28/10/2008, 15:45
 
Fecha de Ingreso: noviembre-2006
Ubicación: República Dominicana
Mensajes: 17
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: validar radiogroups dinamicos

Gracias por tu evasiva Caricatos, pero la verdad que a mi tambien me pasa lo mismo, el formulario me valida pero luego me pasa por alto la parada el el retorno del valor false que debe de darse para que no se envie el formulario. de hecho no creo que seamos nosotros los unicos que tengamos ese problema, se que hace bastante tiempo que esta solucionado, el problema es que no hemos podido dar con dicha solucion, si alguien nos pudiera arrojar algo de luz al respecto estariamos agradecidos.
  #12 (permalink)  
Antiguo 27/07/2010, 22:25
 
Fecha de Ingreso: julio-2010
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: validar radiogroups dinamicos

Saludos a todos.

Después de haber sufrido x lo menos x unas 6 horas buscando la solución al problema de que el formulario se envía aun cuando no se haya llenado todos los campos luego de dar aceptar en el mensaje he dado con la solución.

Lo frustrante del caso es que la solución está en el HTML y no en JAVASCRIPT.

La solución para el código de kepawe es:

<input name="Submit" type="button" value="enviar" onclick="send_form(this.form)" />

ahí todo les funcionará de maravilla
  #13 (permalink)  
Antiguo 28/07/2010, 01:50
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: validar radiogroups dinamicos

Cita:
Iniciado por carlosteranviteri Ver Mensaje
...

La solución para el código de kepawe es:

<input name="Submit" type="button" value="enviar" onclick="send_form(this.form)" />

ahí todo les funcionará de maravilla
Te estás equivocando. Siempre debes enviar formularios con botones submit, tal como está en la primera respuesta... no usar esos botones condiciona el uso de javascript, que todos tienen derecho a desactivar.

Por cierto, voy a cerrar el tema. Siempre se podrá referenciar.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 15:32.