Foros del Web » Creando para Internet » HTML »

Emular el atributo disabled de un <option> en IE

Estas en el tema de Emular el atributo disabled de un <option> en IE en el foro de HTML en Foros del Web. Buenas, necesito deshabilitar algunos <options> de un <select> para lo cual puse esto... Código: <select name="id_tema" class="campos" id="id_tema"> <option value="" selected="selected">-- Seleccione --</option> <option value="1">Tarifaria ...
  #1 (permalink)  
Antiguo 23/04/2007, 16:33
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 16 años, 9 meses
Puntos: 535
Emular el atributo disabled de un <option> en IE

Buenas, necesito deshabilitar algunos <options> de un <select> para lo cual puse esto...

Código:
      <select name="id_tema" class="campos" id="id_tema">
	    <option value="" selected="selected">-- Seleccione --</option>
	    <option value="1">Tarifaria y Fiscal</option>
	    <option value="2">Instalaci&oacute;n</option>
	    <option value="3" disabled="disabled">Planeamiento Urbano</option>
	    <option value="4" disabled="disabled">Medio Ambiente</option>
	  </select>
... pero el maldito IE se pasa por ya saben dónde el atruto "disabled".
¿Hay alguna manera, ya sea mediante JS o lo que fuere, para emularlo?

Saludos y gracias
  #2 (permalink)  
Antiguo 23/04/2007, 20:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Emular el atributo disabled de un <option> en IE

Pues supongo que con javascript se tiene que poder hacer, se me ocurre algo como esto:
Para el select ponés en el onchange una función JS
La función javascript verifica que la opcion seleccionada tenga el atributo disabled.
Si lo tiene, vuelve a la opción seleccionada anteriormente (quizás mostrando un cuadrito en la pantalla que indique que esa opción no se puede seleccionar)
Si no lo tiene, no hacer nada.
En cualquiera de los casos, debería guardar el índice actual, para compararlo en el próximo cambio.

No me acuerdo de memoria cómo se implementaría, pero seguro que la palabra clave debería ser el método selectedIndex que corresponde al select.

Probablemente en el foro de javascript haya algo sobre el manejo de los select.


Saludos.
  #3 (permalink)  
Antiguo 24/04/2007, 05:24
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 15 años, 9 meses
Puntos: 771
Re: Emular el atributo disabled de un <option> en IE

Hola Al

Siguiendo el guion de alvlin, ha salido esto:

Código PHP:
<html>
<
head>
<
style type="text/css">
.
disa {colorgray}
</
style>
<
script type="text/javascript">
var 
indice 0;
function 
comprobar(obj) {
  
nuevoIndice obj.selectedIndex;
  if(
obj.options[nuevoIndice].disabled)
    
obj.selectedIndex indice;
  else
    
indice nuevoIndice;
}
</script>
</head>
<body>
<select name="id_tema" class="campos" id="id_tema" onchange="comprobar(this)">
        <option value="" selected="selected">-- Seleccione --</option>
        <option value="1">Tarifaria y Fiscal</option>
        <option value="2">Instalaci&oacute;n</option>
        <option value="3" disabled="disabled" class="disa">Planeamiento Urbano</option>
        <option value="4" disabled="disabled" class="disa">Medio Ambiente</option>
</select>
</body>
</html> 
Espero que te sirva. Saludos,

P.D. Ya mismo te pongo una infracción por haberte confundido de foro.
  #4 (permalink)  
Antiguo 24/04/2007, 11:57
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 16 años, 9 meses
Puntos: 535
Re: Emular el atributo disabled de un <option> en IE

Hola y gracias a los dos.
Finalmente "eliminé" (oculté mediante php) las opciones para los usuarios sin permiso a las mismas en ves de usar el atributo disabled, pero igual se agradece el aproach (que será de utilidad si lo vuelvo a necesitr)

Un 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




La zona horaria es GMT -6. Ahora son las 09:39.