Foros del Web » Programando para Internet » Javascript »

Habilitar/Deshabilitar en función de un checkbox

Estas en el tema de Habilitar/Deshabilitar en función de un checkbox en el foro de Javascript en Foros del Web. Tengo la siguiente línea de código q me pasó JavierB si no recuerdo mal Código: document.getElementById("id").style.visibility=(obj.checked)?"visible":"hidden"; 'obj' es un parámetro q se le pasa desde ...
  #1 (permalink)  
Antiguo 06/05/2006, 04:40
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Pregunta Habilitar/Deshabilitar en función de un checkbox

Tengo la siguiente línea de código q me pasó JavierB si no recuerdo mal

Código:
document.getElementById("id").style.visibility=(obj.checked)?"visible":"hidden";
'obj' es un parámetro q se le pasa desde un objeto de tipo checkbox, y se llama al código desde el onclick de dicho objeto. Eso funciona perfecto.
Quería conseguir la misma funcionalidad, pero en vez de ocultar un objeto, deshabilitarlo. He probado:

Código:
document.getElementById("id").style.disabled=(obj.checked)?"true":"false";
Pero eso no funciona y no sé cómo debería poner los comandos... ¿Alguien puede darme alguna idea?
Muchas gracias!
  #2 (permalink)  
Antiguo 06/05/2006, 04:59
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola AnDrEa MM

Puedes hacerlo exactamente igual, sólo debes quitarle el style

document.getElementById("id").disabled= (obj.checked)?"true":"false";

un saludo
  #3 (permalink)  
Antiguo 06/05/2006, 05:13
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Como el atributo checked es booleano, sobra lo que hay detrás de obj.checked, pero me parece que debe ser el valor "negado"...

document.getElementById("id").disabled = !obj.checked;

Si fuese al revés basta con borrar la negación ("!")

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 06/05/2006, 05:31
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Así si. La idea de tunnait no me ha funcionado, puede q lo haya usado mal... La idea de negar '!(obj.checked) funciona perfectamente.
Muchas gracias a los 2!!
  #5 (permalink)  
Antiguo 06/05/2006, 05:43
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cita:
Iniciado por AnDrEa MM
Así si. La idea de tunnait no me ha funcionado, puede q lo haya usado mal... La idea de negar '!(obj.checked) funciona perfectamente.
Uf, no me dí cuenta de que habías puesto el true y el false entre comillas debería haber ido sin ellas

document.getElementById("id").disabled= (obj.checked)? true : false;

Cita:
Iniciado por caricatos
document.getElementById("id").disabled = !obj.checked;
Buenísimo
  #6 (permalink)  
Antiguo 06/05/2006, 11:00
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Y con pocas asignaciones previas se puede hacer cosas parecidas por ejemplo en el tema de visiblilidad...

var visible = new Array();
visible[false] = "hidden";
visible[true] = "visible";

y se simplifica la asignación:

document.getElementById("id").style.visibility = visible[obj.checked];

Como ves, el array no se indexa por valores numéricos, sino por valores lógicos... y el juego que da la indexación por cadenas...(arrays asociativos)... ese caso ya lo tendrás más que visto...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 06/05/2006, 13:09
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Excelente

fíjate que no sé por qué no suelo usar arrays asociativos en javascript (en php me inflo a usarlos). Cuando se tiene una costumbre en la forma de trabajar acaba uno siempre a piñón fijo y te pierdes de usar el potencial de otras alternativas
  #8 (permalink)  
Antiguo 06/05/2006, 13:18
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
¡Oops! Casi me pierdo este mensaje.

Está muy bien la idea, caricatos (¡Hola! ) Ya me he hecho un copipeist para tenerlo a mano cuando se me olvide

Un saludete también para tunait
  #9 (permalink)  
Antiguo 06/05/2006, 17:54
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Cita:
Iniciado por tunait
Excelente

fíjate que no sé por qué no suelo usar arrays asociativos en javascript (en php me inflo a usarlos). Cuando se tiene una costumbre en la forma de trabajar acaba uno siempre a piñón fijo y te pierdes de usar el potencial de otras alternativas
Pues en cuanto pones document.body, estás usando un array asociativo... el equivalente con corchetes es document["body"]
... y con respecto al símil con php... el bucle para obtener los elementos es de una forma similar (aunque más restringida):

for (atributo in objeto)...

Bueno, supongo que no es necesario poner ejemplos...
Javi: estoy seguro de que ya habías visto ejemplos similares... pero me marco el winchester...

saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #10 (permalink)  
Antiguo 01/08/2008, 17:55
 
Fecha de Ingreso: mayo-2005
Mensajes: 7
Antigüedad: 19 años
Puntos: 0
Respuesta: Habilitar/Deshabilitar en función de un checkbox

Hola, cómo están, espero que bien, tengo una duda del cual les agradeceria mucho: tengo este detalle tengo una función que controla un arreglo para seleccionar el sexo de una persona:

<?php
function combo_matriz($matriz, $name, $default,$valori) {
$result="<select name=\"$name\" class=\"datos\" $status>\n";
if ($valori > 0){ $result.="<option value=''>--></option>";}
for ($i=$valori;$i<=count($matriz); $i++){
$key = $i;
if ($default == $key) {$selected="selected";} else {$selected="";}
$result.="<option value='$key' $selected>$matriz[$i]</option>\n";
}
$result.="</select>\n";
return $result;
}

$matriz = array(0=>"SELECIONA...",1=>"MUJER",2=>"HOMBRE");
echo combo_matriz($matriz, "sexo", $datos["sexo"],0);

pero tambíén tengo una opción, checkbox, del cual quiero deshabilitar cuando seleccionen el sexo de hombre ó lo contrario.

<th scope="col">E:</th>
<th scope="col">
<input name="e" type="checkbox" <?php if ($comp["e"] > 0) echo "checked"; ?> /></th></th>

les agradeceria mucho su apoyo.
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

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




La zona horaria es GMT -6. Ahora son las 05:13.