Foros del Web » Programando para Internet » Jquery »

Deshabilitar opciones de un Select

Estas en el tema de Deshabilitar opciones de un Select en el foro de Jquery en Foros del Web. Hola tod@s. Estoy intentando hacer una cosa con un formulario. Pensaba que lo había resuelto pero he encontrado un error y no sé solucionarlo, entre ...
  #1 (permalink)  
Antiguo 07/02/2014, 08:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Deshabilitar opciones de un Select

Hola tod@s.

Estoy intentando hacer una cosa con un formulario. Pensaba que lo había resuelto pero he encontrado un error y no sé solucionarlo, entre otras cosas proque no tengo ni idea de jQuery.
El código (simplificado) que tengo es el siguiente:

Código HTML:
<div id="radio">
   <label>Tipo: </label>	  	  
   <input type="radio" name="tipo" value="comunidades" checked />Comunidad
   <input type="radio" name="tipo" value="provincias" />Provincia
</div>

<div id="comunidades" class="desc">
   <select name="comunidad" size="10">
      <option value='61'>Andalucía</option>
      <option value='62'>Aragón</option>
      <option value='63'>Asturias</option>
      .......	  	  	
   </select>
</div>

<div id="provincias" class="desc">
   <select name="provincia" size="10">
      <optgroup label='Andalucía'>
        <option value='6104'>Almería</option>
        <option value='6111'>Cádiz</option>             
        .......
      </optgroup>
      <optgroup label='Aragón'>
         <option value='6222'>Huesca</option>
         <option value='6244'>Teruel</option>
         ........             
      </optgroup>
      .......
   </select>
</div> 
Lo que quiero hacer es mostrar solo un campo select según el botón radio seleccionado. Buscando por internet encontré un script de jQuery que conseguí modificarlo para que sirviera para lo que quería hacer. Es el siguiente:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.   $(document).ready(function() {       
  3.     $("input[name$='tipo']").click(function() {
  4.       var test = $(this).val();
  5.       $("div.desc").hide();
  6.       $("#" + test).show();
  7.     });
  8.   });
  9. </script>

También hay que usar un poco de css para mostrar al principio solo el select del radio que tiene el atributo "checked".

Esto aparentemente me funcionaba bien, pero he encontrado un error que no sé resolver. La cosa es que si se selecciona una opción de un select y luego se cambia al otro select y se selecciona otra opción, al enviar el formulario se envían las opciones de los dos select, y esto no es lo que quiero hacer.
Yo quiero que sólo se envíe la opción del select que está visible en el momento de enviar el formulario. Así que supongo que además de ocultar el select cuando se pulsa el radio habrá que anular la opción que estuviera seleccionada.

A ver si alguien me puede ayudar con esto, seguro que será algo sencillo.

Gracias. Un saludo.
  #2 (permalink)  
Antiguo 07/02/2014, 08:29
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Deshabilitar opciones de un Select

Puedes deshabilitarlos para que no se envíen con el formulario, prueba esto:

Código Javascript:
Ver original
  1. $(document).ready(function() {      
  2.     $("input[name$='tipo']").click(function() {
  3.         var test = $(this).val();
  4.         $("div.desc").hide();
  5.         $("div.desc").find('select').prop('disabled', true);
  6.         $("#" + test).show();
  7.         $("#" + test).find('select').removeProp('disabled');
  8.     });
  9. });

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 07/02/2014, 10:34
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: Deshabilitar opciones de un Select

¡Sí, funciona!.
Muchas gracias. Un saludo.

Etiquetas: deshabilitar, opciones, select
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 00:37.