Foros del Web » Programando para Internet » Javascript »

Activar/desactivar formulario con variables dinámicas

Estas en el tema de Activar/desactivar formulario con variables dinámicas en el foro de Javascript en Foros del Web. Buenos días, tengo un problema con un formulario web. Quiero que cuando el usuario escoja una opción de la primera pestaña, se active (o no) ...
  #1 (permalink)  
Antiguo 16/03/2012, 03:11
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 6 meses
Puntos: 0
Activar/desactivar formulario con variables dinámicas

Buenos días,

tengo un problema con un formulario web. Quiero que cuando el usuario escoja una opción de la primera pestaña, se active (o no) las restantes.
La solución la he encontrado, pero mi nuevo problema es que el nombre del select es dinámico, es decir no es siempre “SEL1, SEL2,...” sino que va cambiando.

Para que se entienda les copio el código que he conseguido hacer funcionar:

Javascript:
Código Javascript:
Ver original
  1. function mostrar_tabac(){
  2.     if (document.frm.SEL1.value == "1") {
  3.         document.frm.SEL2.disabled = true;
  4.         document.frm.SEL3.disabled = true;
  5.     } else if (document.frm.SEL1.value == "2") {
  6.         document.frm.SEL2.disabled = true;
  7.         document.frm.SEL3.disabled = false;
  8.     } else if (document.frm.SEL1.value == "3") {
  9.         document.frm.SEL2.disabled = false;
  10.         document.frm.SEL3.disabled = false;
  11.     }
  12. }

PHP:
Código PHP:
<table cellpadding="0" cellspacing="0">
    <
thead>
        <
tr>
            <
th class="aspecte">Estado</th>
            <
th class="aspecte">Tipo de<br>tabaco</td>
            <
th class="aspecte">Dosis/día</td>
        </
tr>
    </
thead>
    <
tbody>

    <
form name='frm'>
        <
tr>
            <
td class="aspecte">
                <
select name="SEL1" id="SEL1" size="1" onChange="mostrar_tabac();">
                    <
option><pre></pre></option>
                    <
option value="1">No ha fumado nunca</option>
                    <
option value="2">Exfumador desde (indicar tiempo en 'dosis/día')</option>
                    <
option value="3">Fumador</option>
                </
select>
            </
td>
            <
td class="aspecte">
                <
select name="SEL2" id="SEL2" size="1" disabled>
                    <
option><pre></pre></option>
                    <
option>Cigarrillos</option>
                    <
option>Puros</option>
                    <
option>Pipa</option>
                </
select>
            </
td>
            <
td class="aspecte"><INPUT name="SEL3" id="SEL3" type="text" disabled></td>
        </
tr>
    </
form>

    </
body>
</
table
Ahora mi problema es que las etiquetas name y id NO són SEL1, SEL2 y SEL3 sino que són:

Código PHP:
    "insert_tabac_estado_".$i;
    
"insert_tabac_tipo_".$i;
    
"insert_tabac_dosis_".$i
Y está todo dentro de un for que va modificando el $i. Cuando lo ejecuto así, no hay manera de que funcione correctamente el Javascript.


He intentado pasar las variables dentro de la función de Javascript haciendo:
Código PHP:
$sel1 = "insert_tabac_estado_".$i;
$sel2 = "insert_tabac_tipo_".$i;
$sel3 = "insert_tabac_dosis_".$i;
...
...
<select name="<?php echo $sel1 ?>" id="<?php echo $sel1 ?>" size="1" onChange="mostrar_tabac(‘<?php echo $sel1 ?>’, ‘(‘<?php echo $sel2 ?>’, ‘(‘<?php echo $sel3 ?>’);
Código Javascript:
Ver original
  1. function mostrar_tabac(sel_tab1, sel_tab2, sel_tab3){
  2.     if (document.frm.sel_tab1.value == "1") {
  3.         document.frm.sel_tab2.disabled = true;
  4.         document.frm.sel_tab3.disabled = true;
  5.     } else if (document.frm.sel_tab1.value == "2") {
  6.         document.frm.sel_tab2.disabled = true;
  7.         document.frm.sel_tab3.disabled = false;
  8.     } else if (document.frm.sel_tab1.value == "3") {
  9.         document.frm.sel_tab2.disabled = false;
  10.         document.frm.sel_tab3.disabled = false;
  11.     }
  12. }


Pero nada,… alguna idea?

Muchas gracias!!
  #2 (permalink)  
Antiguo 16/03/2012, 16:16
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Activar/desactivar formulario con variables dinámicas

¿Con esta sentencia no te salta ningún error?

<select name="<?php echo $sel1 ?>" id="<?php echo $sel1 ?>" size="1" onChange="mostrar_tabac(‘<?php echo $sel1 ?>’, ‘(‘<?php echo $sel2 ?>’, ‘(‘<?php echo $sel3 ?>’);

a todos los echo les falte el punto y coma final

prueba a cambiar está comilla (‘) y esta otra (´) que parece un acento por la comilla simple (')

Y otra cosa si el contenido de los selects es diferentes para que quieres la variable?
Si no mira el código fuente a ver que te está imprimiendo y si aún así no te va prueba a hacer debug del javascript http://elcaminillo.wordpress.com/201...en-javascript/
  #3 (permalink)  
Antiguo 19/03/2012, 02:36
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Activar/desactivar formulario con variables dinámicas

Buenos días,

me equivoqué al copiar la línea del select, se me coló un par de '(' que no van. La correcta es la siguiente:

<select name="<?php echo $sel1 ?>" id="<?php echo $sel1 ?>" size="1" onChange="mostrar_tabac('<?php echo $sel1 ?>', '<?php echo $sel2 ?>', '<?php echo $sel3 ?>');

Las comillas en mi código son simples pero al copiar-pegar aquí se transformaron.

Necesito el $i porque no se cuantos select voy a tener, me depende obligatoriamente de esa variable.

Estoy mirando con el Firebug, pero no me salta ningún error :(



Gracias!
  #4 (permalink)  
Antiguo 19/03/2012, 04:02
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Activar/desactivar formulario con variables dinámicas

Me parece que tu problema está en la función

mostrar_tabac

prueba con esta y me comentas..

Código Javascript:
Ver original
  1. <script>
  2. function mostrar_tabac(sel_tab1, sel_tab2, sel_tab3){
  3.  
  4.     var elem1=document.getElementById(sel_tab1);
  5.     var elem2=document.getElementById(sel_tab2);
  6.     var elem3=document.getElementById(sel_tab3);
  7.    
  8.     if (elem1.value == "1") {
  9.         elem2.disabled = true;
  10.         elem3.disabled = true;
  11.     } else if (elem1.value == "2") {
  12.         elem2.disabled = true;
  13.         elem3.disabled = false;
  14.     } else if (elem1.value == "3") {
  15.         elem2.disabled = false;
  16.         elem3.disabled = false;
  17.     }
  18. }
  19. </script>
  #5 (permalink)  
Antiguo 19/03/2012, 04:45
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Activar/desactivar formulario con variables dinámicas

SIIIIIIIIIIIIIII!!! :D:D

Ya me funcionó correctamente con tu función!

Muchas gracias Nifdya!!

Etiquetas: formulario, funcion, input, php, variables
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 04:00.