Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/03/2012, 03:11
cachimira
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 11 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!!