Foros del Web » Programando para Internet » Javascript »

Deshabilitar checkboxes con strings

Estas en el tema de Deshabilitar checkboxes con strings en el foro de Javascript en Foros del Web. Buenas! Estoy intenanto hacer un formulario típico con checkboxes de modo que si se selecciona "Todo" se deshabilitan los demás checkboxes del grupo y si ...
  #1 (permalink)  
Antiguo 19/02/2007, 14:42
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 5 meses
Puntos: 1
Deshabilitar checkboxes con strings

Buenas! Estoy intenanto hacer un formulario típico con checkboxes de modo que si se selecciona "Todo" se deshabilitan los demás checkboxes del grupo y si se selecciona cualquiera que no sea "Todo" se deshabilita este. El problema es que el script que he encontrado funciona solo con valores concretos, pero no con cadenas. Estoy empezando con Javascript y esto se me queda un poco grande...

Código:
function checkChoice(field, i) {
if (i == 0) { // "All" checkbox selected.
if (field[0].checked == true) {
for (i = 1; i < field.length; i++)
field[i].checked = false;
   }
}
else  {  
if (field[i].checked == true) {
field[0].checked = false;
      }
   }
}
Código HTML:
<input type="checkbox" name="mode[]" value="*" checked onclick="checkChoice(document.form.mode[], 0)">Todo
<input type="checkbox" name="mode[]" value="one" onclick="checkChoice(document.form.mode[], 1)">Uno
<input type="checkbox" name="mode[]" value="two" onclick="checkChoice(document.form.mode[], 2)">Dos</td>
<input type="checkbox" name="mode[]" value="three" onclick="checkChoice(document.form.mode[], 3)">Tres
Gracias!
  #2 (permalink)  
Antiguo 19/02/2007, 18:12
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: Deshabilitar checkboxes con strings

Hola, aqui te propongo una modificacion

Código PHP:
function checkChoice(fieldi) {
if (
== 0) { // "All" checkbox selected.
if (field[0].checked == true) {
for (
1field.lengthj++)
field[j].checked false;
   }
}
else  {  
if (
field[i].checked == true) {
field[0].checked false;
      }
   }

y el codigo HTML:

Código HTML:
<form name="form">
<input type="checkbox" name="mode[]" value="*" checked="checked" onclick="checkChoice(document.form, 0)">Todo
<input type="checkbox" name="mode[]" value="one" onclick="checkChoice(document.form, 1)">Uno
<input type="checkbox" name="mode[]" value="two" onclick="checkChoice(document.form, 2)">Dos</td>
<input type="checkbox" name="mode[]" value="three" onclick="checkChoice(document.form, 3)">Tres
</form> 
Saludos.
  #3 (permalink)  
Antiguo 19/02/2007, 19:28
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Deshabilitar checkboxes con strings

Muchísimas gracias. Yo hubiera tardado una eternidad en arreglarlo
  #4 (permalink)  
Antiguo 20/02/2007, 05:15
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Deshabilitar checkboxes con strings

Problema nuevo el código solo sirve si hay un campo de este tipo en el formulario. Si pongo otro (hay 3) al haber varios onclick="checkChoice(document.form, 0)" se ralla...
  #5 (permalink)  
Antiguo 20/02/2007, 05:18
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: Deshabilitar checkboxes con strings

No te entiendo, explicate un poco mejor.
  #6 (permalink)  
Antiguo 20/02/2007, 05:19
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: Deshabilitar checkboxes con strings

solo quires que lo haga en checkbox????

pon un if(field[i].type == "checkbox") ....


Saludos
  #7 (permalink)  
Antiguo 20/02/2007, 05:49
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Deshabilitar checkboxes con strings

Me explico, hay varios campos dentro del formulario con lo que te he comentado antes (checkbox "All", que deshabilita todos los demas checkboxes del grupo y si se selecciona cualquier checkbox del grupo que no sea "All", este se deshabilita).
El problema viene (creo) porque el script detecta si esta seleccionado el checkbox "All" (field[0]), pero no mira en nombre del grupo, con lo cual si selecciono cualquier checkbox del tipo "All" del formulario, se deshabilitan todos los demás checkboxes (da igual del grupo que sean) y viceversa, si selecciono cualquier checkbox, automáticamente se deshabilitan todos los "All" del formulario.
Espero haberme explicado mejor...
Un saludo y muchas gracias
  #8 (permalink)  
Antiguo 20/02/2007, 06:09
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: Deshabilitar checkboxes con strings

pon el codigo que tienes, si puedes ponerlo.


Saludos
  #9 (permalink)  
Antiguo 20/02/2007, 06:20
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Deshabilitar checkboxes con strings

Código HTML:
<form  name="form" action="avanzado_es.php" method="post">
<input type="checkbox" name="mode[]" value="*" checked onclick="checkChoice(document.form, 0)">Todo
<input type="checkbox" name="mode[]" value="venta" onclick="checkChoice(document.form, 1)">Reventa
<input type="checkbox" name="mode[]" value="promocion" onclick="checkChoice(document.form, 2)">Promoci&oacute;n
<input type="checkbox" name="mode[]" value="traspaso" onclick="checkChoice(document.form, 3)">Traspaso

<input name="type[]" type="checkbox" value="*" checked="checked" onclick="checkChoice(document.form, 0)">Todo</td>
<input type="checkbox" name="type[]" value="APARTAMENTO" onclick="checkChoice(document.form, 1)">Apartamento</td>
<input type="checkbox" name="type[]" value="BUNGALOW" onclick="checkChoice(document.form, 2)">Bungalow</td>
<input type="checkbox" name="type[]" value="CASA DE PUEBLO" onclick="checkChoice(document.form, 3)">Casa de Pueblo</td>
<input type="checkbox" name="type[]" value="FINCA" onclick="checkChoice(document.form, 4)">Finca</td>
<input type="checkbox" name="type[]" value="LOCAL EN VENTA" onclick="checkChoice(document.form, 5)"> Local</td>
<input type="checkbox" name="type[]" value="TERRENO" onclick="checkChoice(document.form, 6)">Terreno</td>
<input type="checkbox" name="type[]" value="VILLA" onclick="checkChoice(document.form, 7)">Villa</td>
</form> 
He probado el primer código que puse y funciona pero solo si quito los strings y lo dejo como variable simple, el problema es que necesito que sean strings porque es un formulario de busqueda. Te pongo también el código PHP y el query por si te ayuda.

Código PHP:
if (isset($buscar)) {

    if (
$mode[0]=="*")
        
$qmode="modo != '*'";
    else {
        for (
$i=0;$mode[$i]!="";$i++) {
            if (
$i==0)
                
$qmode="modo = '".$qmode.$mode[$i]."'";
            else 
                
$qmode=$qmode.$mode[$i]."'";
            if (
$mode[$i+1]!="")
                
$qmode=$qmode." OR modo = '";
        }
    }
    
    if (
$type[0]=="*")
        
$qtype="tipo != '*'";
    else {
        for (
$i=0;$type[$i]!="";$i++) {
            if (
$i==0)
                
$qtype="tipo = '".$qtype.$type[$i]."'";
            else 
                
$qtype=$qtype.$type[$i]."'";
            if (
$type[$i+1]!="")
                
$qtype=$qtype." OR tipo = '";
        }
    }
}
$ssql="SELECT * FROM table WHERE $qmode AND $qtype";
$result=mysql_query($ssql$link); 
Gracias!

Edit: te resumo el PHP que ahora que lo miro es un poco lio. Básicamente recorre la cadena y guarda en $qtype y $qmode todos los valores de las cadenas como "mode[0] OR mode[1] OR mode[2]..."

Última edición por Nexus_; 20/02/2007 a las 06:26
  #10 (permalink)  
Antiguo 20/02/2007, 06:47
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: Deshabilitar checkboxes con strings

aqui lo tienes:

Código PHP:
function checkChoice(fieldiborrar) { 
if(
borrar)
    if(
field[i].checked == true)
                  for(
j=1j<field.lengthj++)
                         if(
field[j].name == field[i].name)
                               
field[j].checked false;
else
             if(
borrar)
                  
field[i].checked false;    


La funcion ahora tiene 3 parametros:
field: igual que antes.
i: Ahora es la posicion dentro del formulario.
borrar: es un boolean que indica si es un campo de los que borran todas las opciones.

y el codigo HTML

Código HTML:
<form  name="form" action="avanzado_es.php" method="post">
<input type="checkbox" name="mode[]" value="*" checked onclick="checkChoice(document.form, 0,true)">Todo
<input type="checkbox" name="mode[]" value="venta" onclick="checkChoice(document.form, 1,false)">Reventa
<input type="checkbox" name="mode[]" value="promocion" onclick="checkChoice(document.form, 2,false)">Promoci&oacute;n
<input type="checkbox" name="mode[]" value="traspaso" onclick="checkChoice(document.form, 3,false)">Traspaso

<input name="type[]" type="checkbox" value="*" checked="checked" onclick="checkChoice(document.form, 4,true)">Todo</td>
<input type="checkbox" name="type[]" value="APARTAMENTO" onclick="checkChoice(document.form, 5,false)">Apartamento</td>
<input type="checkbox" name="type[]" value="BUNGALOW" onclick="checkChoice(document.form, 6,false)">Bungalow</td>
<input type="checkbox" name="type[]" value="CASA DE PUEBLO" onclick="checkChoice(document.form, 7,false)">Casa de Pueblo</td>
<input type="checkbox" name="type[]" value="FINCA" onclick="checkChoice(document.form, 8,false)">Finca</td>
<input type="checkbox" name="type[]" value="LOCAL EN VENTA" onclick="checkChoice(document.form, 9,false)"> Local</td>
<input type="checkbox" name="type[]" value="TERRENO" onclick="checkChoice(document.form, 10,false)">Terreno</td>
<input type="checkbox" name="type[]" value="VILLA" onclick="checkChoice(document.form, 11,false)">Villa</td>
</form> 
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 03:46.