Foros del Web » Programando para Internet » Javascript »

Al cambiar el valor del select, cambiar checkbox

Estas en el tema de Al cambiar el valor del select, cambiar checkbox en el foro de Javascript en Foros del Web. Alguien tiene algún script parecido al de la primera FAQ, pero que en vez de cambiar las opciones de otro select, cambie el número de ...
  #1 (permalink)  
Antiguo 08/07/2003, 11:07
V_G
Invitado
 
Mensajes: n/a
Puntos:
Al cambiar el valor del select, cambiar checkbox

Alguien tiene algún script parecido al de la primera FAQ, pero que en vez de cambiar las opciones de otro select, cambie el número de checkboxs y sus valores.

Muchas Gracias.
  #2 (permalink)  
Antiguo 08/07/2003, 13:14
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola V_G.

Yo en tu lugar revisaría el FAQ-27 el cual te permite reescribir la página completa a partir de un evento.

Te advierto que la programación resultante es dificil de leer y por tanto de mantener.

Saludos.
  #3 (permalink)  
Antiguo 08/07/2003, 13:19
V_G
Invitado
 
Mensajes: n/a
Puntos:
Gracias Kaopectate, es justo lo que buscaba. Voy a revisarlo en profundidad, a ver si soy capaz de hacer lo que quiero

PD:No sé como no ví la FAQ si las revisé todas
  #4 (permalink)  
Antiguo 08/07/2003, 14:09
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 3 meses
Puntos: 2
komo se puede modificar para 1 text, 2 text , 3text, 4 text,,

trate y naa
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #5 (permalink)  
Antiguo 08/07/2003, 14:26
V_G
Invitado
 
Mensajes: n/a
Puntos:
Pregunta

¿Qué es lo que quieres decir dobled ?
  #6 (permalink)  
Antiguo 08/07/2003, 14:29
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 3 meses
Puntos: 2
ahi aparece

Combo solo
combo y texto

se puede

Combo solo
combo y texto
combo y 2 texto
combo y 3 texto

Entiendes
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #7 (permalink)  
Antiguo 08/07/2003, 14:33
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola dobled.

Pruébalo asi:

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">

   var 
nValores 0;

   function 
cambiaPg(){
    
with (window.pantalla.document){
     
nValores parseInt(frm.cant.value10);
    }
    
formulario();
   }

   function 
formulario(){
    
with (window.pantalla.document){
     
open();
     
writeln("<html>\n<body>");
     
writeln("<form name='frm'>");
     
writeln(" Número de textos:");
     
writeln(" <input type='text' name='cant'>");
     
writeln(" <input type='button' name='btn' value='Aplicar' onclick='parent.cambiaPg()'>");
     
writeln("<br>");
     for (var 
0nValoresi++){
      
writeln("Valor " String(i) + ":");
      
writeln("<input type='text' name='c" String(i) + "'><br>");
     }
     
writeln("</form>");
     
writeln("</body>\n</html>");
     
close();
    }
   }

   
document.writeln("<frameset rows='100%,*' onload='javascript:parent.formulario()'>");
   
document.writeln("     <frame name='pantalla' src='DummyPage.htm'>");
   
document.writeln("     <frame src=''>");
   
document.writeln("</frameset>");

  
</script>
 </head>
</html> 
Saludos.
  #8 (permalink)  
Antiguo 09/07/2003, 04:31
V_G
Invitado
 
Mensajes: n/a
Puntos:
Problema 01

¿cómo puedo hacer para que haya una parte estática?, es decir, una parte del código que se vea siempre. He probado a escribir "normal", es decir, en html y no me sale nada en pantalla.

Saludos
  #9 (permalink)  
Antiguo 09/07/2003, 08:43
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Nop, trabajado de esta forma no hay parte normal. Esa es la desventaja de este enfoque. Tienes un frame cuyo contenido completo se genera dinámicamente y debes lidiar con ello.

Es un fastidio, pero también es muy poderoso.

Saludos.
  #10 (permalink)  
Antiguo 09/07/2003, 10:38
V_G
Invitado
 
Mensajes: n/a
Puntos:
Entonces este sistema no me sirve.
Porque lo que busco es un javascript que al modificar un select, cambie la cantidad y los valores de los checkbox, y debo usarlo en conjunto con php para crear un sistema de noticia, el menú deplegable sería la categoría "madre", donde sólo se puede escoger una opción (por eso es un select) y las subcategorías pueden ser múltiples, por eso escogí checkboxs.

A ver si alguien tiene algún script parecido al de Kaopectate, pero que permita añadir código fijo y me lo pasa.

De todas maneras, muchas gracias


Saludos
  #11 (permalink)  
Antiguo 09/07/2003, 10:54
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Lo que pasa V_G es que el código JavaScript se ejecuta solo al cargarse la página, o como respuesta a un evento, pero la única oportunidad de generar dinámicamente elementos es en la carga.

Otra opción posible es que manipules la visibilidad de los elementos, esperemos a ver si alguien se anota para ayudarte.

Saludos.
  #12 (permalink)  
Antiguo 09/07/2003, 10:58
V_G
Invitado
 
Mensajes: n/a
Puntos:
Es que yo de javascript no sé mucho, sé retocar un poco los scripts, pero tanto como hacerlos yo....
La idea es obtener los valores del select y de los checkbox de una db mysql con php, que eso si se hacerlo, pero el problema es que no sé hacer la parte de javascript .
Así que... a esperar se ha dicho
  #13 (permalink)  
Antiguo 09/07/2003, 13:36
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola de nuevo V_G.

Prueba esto:

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">

   var 
aCks1 = new Array("Primera""Segunda""Tercera");   
   var 
aCks2 = new Array("Una""Otra");   
   var 
aCks3 = new Array("Check-1""Check-2""Check-3""Check-4""Check-5""Check-6");   
   var 
aCks4 = new Array("Check-1""Check-2""Check-3""Check-4""Check-5""Check-6");   
   var 
aCks5 = new Array("Check-1""Check-2""Check-3""Check-4""Check-5""Check-6");   
   var 
aCks6 = new Array("Esta sola");   

   function 
cambia(oSel){
    var 
nChecks;
    var 
nSel oSel[oSel.selectedIndex].value;
    for (var 
06i++){ 
     eval(
"document.frm.ck" String(1) + ".style.display = 'none'");
     eval(
"document.getElementById('sp' + String(i + 1)).innerHTML = ''");
    }
    eval(
"nChecks = aCks" String(nSel) + ".length");
    for (var 
0nChecksi++){
     eval(
"document.frm.ck" String(1) + ".style.display = ''");
     eval(
"document.getElementById('sp' + String(i + 1)).innerHTML = aCks" String(nSel) + "[i]");
    }
   }

  
</script>
 </head>
 <body>
  <form name="frm">
   Opción
   <select name="NumeroDeChecks" onchange="cambia(this)">
    <option value="0"></option>
    <option value="1">Opcion 1</option>
    <option value="2">Opcion 2</option>
    <option value="3">Opcion 3</option>
    <option value="4">Opcion 4</option>
    <option value="5">Opcion 5</option>
    <option value="6">Opcion 6</option>
   </select><br>
   <table>
    <tr>
     <td>
      <input type="checkbox" name="ck1">
     </td>
     <td id="sp1">
      Uno
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="ck2">
     </td>
     <td id="sp2">
      Dos
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="ck3">
     </td>
     <td id="sp3">
      Tres
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="ck4">
     </td>
     <td id="sp4">
      Cuatro
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="ck5">
     </td>
     <td id="sp5">
      Cinco
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="ck6">
     </td>
     <td id="sp6">
      Seis
     </td>
    </tr>
  </form>
 </body>
</html> 
Saludos.
  #14 (permalink)  
Antiguo 10/07/2003, 02:28
V_G
Invitado
 
Mensajes: n/a
Puntos:
Muchas Gracias por el script, voy a probarlo y luego te comento que tal
  #15 (permalink)  
Antiguo 10/07/2003, 07:32
V_G
Invitado
 
Mensajes: n/a
Puntos:
Kaopectate, el script está
Pero me preguntaba si se puede hacer que varíe el nombre del checkbox y su valor en función del valor del select.
Lo digo, porque necesito que los checkbox y los selects sean dinámicos, ya que la idea es que tomen sus valores de una db.

Tanto si se puede hacer como si no, muchas gracias por tu colaboración.

Saludos !!
  #16 (permalink)  
Antiguo 10/07/2003, 09:34
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola V_G.

En los arreglos que estan declarados al comienzo tienes los títulos de los checks de acuerdo a cada opción del select. Prueba para que veas que cada vez que cambias el select te cambian los títulos.

Saludos.
  #17 (permalink)  
Antiguo 10/07/2003, 11:06
V_G
Invitado
 
Mensajes: n/a
Puntos:
Exclamación

Lo siento Kaopectate, pero no sé que tengo que modificar para que cambie el "value" de cada checkbox al cambiar de opción en el select. Me puedes echar 'otra mano'.

PD: No se podría hacer un switch como en php y que te muestre unos datos u otros en función del valor del option.

Muchas gracias y Saludos
  #18 (permalink)  
Antiguo 10/07/2003, 11:13
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Para que cada value de los checkboxes equivalga a su propio texto:

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">

   var 
aCks1 = new Array("Primera""Segunda""Tercera");   
   var 
aCks2 = new Array("Una""Otra");   
   var 
aCks3 = new Array("Check-1""Check-2""Check-3""Check-4""Check-5""Check-6");   
   var 
aCks4 = new Array("Check-1""Check-2""Check-3""Check-4""Check-5""Check-6");   
   var 
aCks5 = new Array("Check-1""Check-2""Check-3""Check-4""Check-5""Check-6");   
   var 
aCks6 = new Array("Esta sola");   

   function 
cambia(oSel){
    var 
nChecks;
    var 
nSel oSel[oSel.selectedIndex].value;
    for (var 
06i++){ 
     eval(
"document.frm.ck" String(1) + ".style.display = 'none'");
     eval(
"document.getElementById('sp' + String(i + 1)).innerHTML = ''");
    }
    eval(
"nChecks = aCks" String(nSel) + ".length");
    for (var 
0nChecksi++){
     eval(
"document.frm.ck" String(1) + ".style.display = ''");
     eval(
"document.frm.ck" String(1) + ".value = aCks" String(nSel) + "[i]");
     eval(
"document.getElementById('sp' + String(i + 1)).innerHTML = aCks" String(nSel) + "[i]");
    }
   }

  
</script>
 </head>
 <body>
  <form name="frm">
   Opción
   <select name="NumeroDeChecks" onchange="cambia(this)">
    <option value="0"></option>
    <option value="1">Opcion 1</option>
    <option value="2">Opcion 2</option>
    <option value="3">Opcion 3</option>
    <option value="4">Opcion 4</option>
    <option value="5">Opcion 5</option>
    <option value="6">Opcion 6</option>
   </select><br>
   <table>
    <tr>
     <td>
      <input type="checkbox" name="ck1">
     </td>
     <td id="sp1">
      Uno
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="ck2">
     </td>
     <td id="sp2">
      Dos
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="ck3">
     </td>
     <td id="sp3">
      Tres
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="ck4">
     </td>
     <td id="sp4">
      Cuatro
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="ck5">
     </td>
     <td id="sp5">
      Cinco
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="ck6">
     </td>
     <td id="sp6">
      Seis
     </td>
    </tr>
  </form>
 </body>
</html> 
Pruébalo a ver si funciona.

Saludos.
  #19 (permalink)  
Antiguo 10/07/2003, 12:15
V_G
Invitado
 
Mensajes: n/a
Puntos:
Se acerca, pero no es lo que busco.
¿No se puede hacer algo con if?, es decir, dependiendo del valor del select, mostrar un código un otro.
El problema del script que me distes, es que el name de los checkboxs es siempre el mismo (ck1, ck2, etc..) y lo qeu yo quiero, es que el name, y el value, vengan de una db.
Por eso pregunto si no se puede usar un switch o una cadena de ifs como en php, que dependiendo del valor del select muestre una cosa u otra, pero sin recargar la página.

Muchas Gracias y Saludos

PD: Siento ser tan plasta
  #20 (permalink)  
Antiguo 10/07/2003, 13:17
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Pues los nombres de los checks no se los puedes cambiar con JavaScript, debes prefijarlos desde PHP o ASP o lo que estes usando.

Saludos.
  #21 (permalink)  
Antiguo 10/07/2003, 13:28
V_G
Invitado
 
Mensajes: n/a
Puntos:
La idea es esa, los name, los value y el texto de los checkbox y del select, son extraídos de un db sql con php, pero necesito un javascript que muestre un grupo de checkbox u otro en función del valor del select.

Saludos
  #22 (permalink)  
Antiguo 11/07/2003, 13:19
V_G
Invitado
 
Mensajes: n/a
Puntos:
Pregunta

¿Se puede hacer lo que yo pido?

Muchas gracias,
  #23 (permalink)  
Antiguo 11/07/2003, 16:55
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola V_G.

De poderse, se puede...el problema es que se crea un nivel extra de dificultad cuando dices que tienes que cambiar los nombres de los checks cada vez, sin embargo yo veo dos posibilidades:

- La primera es que se generen TODOS los checkboxes en el formulario pero invisibles y que el select vaya haciendo visibles los que necesitas.

- Una segunda manera es que se resuelva con frames y la página se redibuje completa (usando JavaScript) al cambiar el select.

Pregunto: ¿Aparte del select y los checks hay muchos otros elementos? ¿Que tan complejo es el formulario fuera de esos tags? ¿Cual es la necesidad de que los nombres de los checks sean distintos?

Saludos.
  #24 (permalink)  
Antiguo 12/07/2003, 04:17
V_G
Invitado
 
Mensajes: n/a
Puntos:
Hola Kopectate !!.
La idea que yo tenía en mente, es la primera opción que tu planteas, es decir, generar todos los checkboxes al inicio con php y ocultarlos con javascript (no desactivarlos), y luego, según la opción del select, mostrar unos checks u otros.
Respondiendo a tus preguntas:
Cita:
¿Aparte del select y los checks hay muchos otros elementos?
Pues sí, hay bastantes, hay varias casilas de texto, un menu lateral, y la cabecera de la página.
Cita:
¿Que tan complejo es el formulario fuera de esos tags?
Pues bastante.
Cita:
¿Cual es la necesidad de que los nombres de los checks sean distintos?
La necesidad de que los checks sean distintos, viene de que al ser generados dinámicamente desde una db, sus value y sus name son distintos.

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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:37.