Foros del Web » Programando para Internet » Javascript »

Seleccion de checkbox Problema...

Estas en el tema de Seleccion de checkbox Problema... en el foro de Javascript en Foros del Web. Tengo el siguiente problema Tengo un formulario en el cual tengo tres sectores de seleccion que poseen checkbox por ejemplo un grupo de Origen un ...
  #1 (permalink)  
Antiguo 18/11/2005, 07:58
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 22 años
Puntos: 2
Seleccion de checkbox Problema...

Tengo el siguiente problema
Tengo un formulario en el cual tengo tres sectores de seleccion que poseen checkbox por ejemplo

un grupo de Origen

un grupo de Relacion

un grupo de Destino

Cada uno de estos grupos poseen mas de 20 checkbox.
El tema es que quiero colocar un Javascript que sea valido solo para el grupo de Destino que pueda seleccionar todos o invertir los seleccionados pero con el ejemplo que esta en los FAQS me selecciona todos los checkbox que esten presente en la pagina.
Se puede arreglar para que funcione solo para un grupo.

Desde ya muchas gracias y saludos a todos
  #2 (permalink)  
Antiguo 18/11/2005, 09:03
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola Chuty:

Se pueden seleccionar los elementos por el nombre getElementsByName()
Pero existe el problema de que explorer crea la colección a partir del atributo id (que se supone que no debe repetirse...)

Creo que una solución que no te daría problemas es poner cada grupo en un contenedor (podría ser un div, aunque a mi me gusta más el fieldset...) con un identificador (id) y recoger la colección de checkboxes interior...

<fieldset id="grupo1">...
<input type="checkbox" value="g1_1" name="grupo1" />
<input type="checkbox" value="g1_2" name="grupo1" />
<input type="checkbox" value="g1_3" name="grupo1" />
<input type="checkbox" value="g1_4" name="grupo1" />
<input type="checkbox" value="g1_5" name="grupo1" />
...
</fieldset>

y luego la función:

seleccionar(grupo, estado) {
// grupo es el id contenedor
// estado es true/false
for (var i = 0, checks = document.getElementById(grupo).getElementsByTagNam e("input"), total = checks.length; i < total; i ++)
checks[i].checked = estado;
}

Y se usaría:
seleccionar("grupo1", true);

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 18/11/2005, 09:53
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 22 años
Puntos: 2
Gracias Caricatos pero no entiendo como poner <fieldset id="grupo1">
Por ejemplo este es mi codigo

Código PHP:
<SCRIPT LANGUAGE="JavaScript"
function 
marcaTodos(formu) { 
    for (
i=0i<formu.lengthi++) { 
        
with (formu.elements[i]) { 
            if(
className!='fieldset'
            if ( 
type == 'checkbox' ) { checked true 
        } 
    } 


function 
invierte(formu) { 
    for (
i=0i<formu.lengthi++) { 
        
with (formu.elements[i]) { 
            if(
className!='fieldset'
            if ( 
type == 'checkbox' ) { checked = !checked 
        } 
    } 

</script> 
<FORM NAME=formulario> 

<input type="checkbox" name="Test1" value="ON"> 
<input type="checkbox" name="Test2" value="ON">

<select size="1" name="D1"> 
<option>                       </option> 
<option>I  = Indistinto        </option> 
<option>C2 = Conjunto de a 2   </option> 
<option>C3 = Conjunto de a 3   </option> 
<option>CD = Conjunto Dinamico </option> 
</select> 
<div>
<input type="checkbox" name="cod1" value="ON"> 
<input type="checkbox" name="cod2" value="ON"> 
<input type="checkbox" name="cod3" value="ON"> 
<input type="checkbox" name="cod4" value="ON"> 

<input type="button" name="Bot1" value=" Todos " onClick="marcaTodos(this.form)" style="font-size: 8 pt">&nbsp;&nbsp; 
<input type="button" name="Bot2" value="Invertir" onClick="invierte(this.form)" style="font-size: 8 pt">&nbsp;&nbsp; 
</div> 
                                               
</FORM> 
desde ya muchas gracias
  #4 (permalink)  
Antiguo 18/11/2005, 12:41
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola:

Código:
<form name=formulario > 

<fieldset id="grupo1"><legend>prueba</legend>
<input type="checkbox" name="Test1" value="ON"> 
<input type="checkbox" name="Test2" value="ON"> 
</fieldset>

...
</form>
Aunque puedes usar cualquier otra etiqueta para juntar elementos (un div, por ejemplo...)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 01/12/2005, 07:51
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 22 años
Puntos: 2
Gracias y disculpas Caricatos.
Pero sigo sin entender....
Te dejo aca el codigo para que me digas cual es mi error a pesar que creo use mal el seleccionar("grupo1", true);
Y no me quiero imaginar como sera para invertir la seleccion del mismo grupo.

Código PHP:
<SCRIPT LANGUAGE="JavaScript"
seleccionar(grupoestado) {
// grupo es el id contenedor
// estado es true/false
for (var 0checks document.getElementById(grupo).getElementsByTagNam e("input"), total checks.lengthtotal++)
checks[i].checked estado;
}

function 
invierte(formu) { 
    for (
i=0i<formu.lengthi++) { 
        
with (formu.elements[i]) { 
            if(
className!='fieldset'
            if ( 
type == 'checkbox' ) { checked = !checked 
        } 
    } 

</script> 
<FORM NAME=formulario> 
<fieldset id="grupo1">
<input type="checkbox" value="g1_1" name="grupo1" />
<input type="checkbox" value="g1_2" name="grupo1" />
<input type="checkbox" value="g1_3" name="grupo1" />
<input type="checkbox" value="g1_4" name="grupo1" />
<input type="checkbox" value="g1_5" name="grupo1" />

</fieldset>
<select size="1" name="D1"> 
<option>                       </option> 
<option>I  = Indistinto        </option> 
<option>C2 = Conjunto de a 2   </option> 
<option>C3 = Conjunto de a 3   </option> 
<option>CD = Conjunto Dinamico </option> 
</select> 

<input type="checkbox" name="cod1" value="ON"> 
<input type="checkbox" name="cod2" value="ON"> 
<input type="checkbox" name="cod3" value="ON"> 
<input type="checkbox" name="cod4" value="ON"> 
<input type="button" name="Bot1" value=" Todos " onClick=seleccionar("grupo1", true) style="font-size: 8 pt">&nbsp;&nbsp; 
<input type="button" name="Bot2" value="Invertir" onClick="invierte(this.form)" style="font-size: 8 pt">&nbsp;&nbsp; 
                                                
</FORM> 
Desde ya muchas gracias y saludos
  #6 (permalink)  
Antiguo 01/12/2005, 08:01
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
Esto anda, pero me tira error
"Error: Se esperaba fin de valor para la propiedad pero se encontró 'pt'. Error in parsing value for property 'font-size'. Declaration dropped.
Archivo Fuente:
Línea: 0"

no sé bien cual es ese problema, pero anda =P

Código PHP:
<SCRIPT LANGUAGE="JavaScript">
function 
seleccionar(grupoestado) {
// grupo es el id contenedor
// estado es true/false
for (var 0checks document.getElementById(grupo).getElementsByTagName("input"), total checks.lengthtotal++)
checks[i].checked estado;
}

function 
invierte(formu) {
    for (
i=0i<formu.lengthi++) {
        
with (formu.elements[i]) {
            if(
className!='fieldset')
            if (
formu.elements[i].type == 'checkbox' ) { checked = !checked }
        }
    }
}
</script>
<FORM NAME=formulario>
<fieldset id="grupo1">
<input type="checkbox" value="g1_1" name="grupo1" />
<input type="checkbox" value="g1_2" name="grupo1" />
<input type="checkbox" value="g1_3" name="grupo1" />
<input type="checkbox" value="g1_4" name="grupo1" />
<input type="checkbox" value="g1_5" name="grupo1" />

</fieldset>
<select size="1" name="D1">
<option>                       </option>
<option>I  = Indistinto        </option>
<option>C2 = Conjunto de a 2   </option>
<option>C3 = Conjunto de a 3   </option>
<option>CD = Conjunto Dinamico </option>
</select>

<input type="checkbox" name="cod1" value="ON">
<input type="checkbox" name="cod2" value="ON">
<input type="checkbox" name="cod3" value="ON">
<input type="checkbox" name="cod4" value="ON">
<input type="button" name="Bot1" value=" Todos " onClick='seleccionar("grupo1", true)' style="font-size: 8 pt">&nbsp;&nbsp;
<input type="button" name="Bot2" value="Invertir" onClick="invierte(this.form)" style="font-size: 8 pt">&nbsp;&nbsp;
                                                
</FORM> 
  #7 (permalink)  
Antiguo 01/12/2005, 09:07
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 22 años
Puntos: 2
Gracias xeneize... digo Seppo
Ahora vos sabes como modificar el script de invertir para que trabaje dentro del fieldset tal como trabaja el de marcar todos.
igualmente muchas gracias y saludos
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 18:39.