2011-02-09 30 views
7

Chicos he utilizado el siguiente código para deshabilitar una opción usando jQuery (jquery-1.4.2.min). La desactivación ocurre en Firefox, pero no en IE.Jquery Deshabilitar opción en menú desplegable

<SELECT NAME="SCOPE" id="SCOPE"> 
<OPTION VALUE="G"> Global 
<OPTION VALUE="D"> Dynamic 
</SELECT> 


$("#SCOPE option[value='G']").attr("disabled","disabled"); 
$("#SCOPE option[value='D']").attr("selected", "selected"); 
+5

Si mal no recuerdo, IE no reconoce deshabilitado para la etiqueta 'option'. –

Respuesta

6

Creo que podría estar equivocado, pero podría ser porque la opción de seleccionar en lugar de la opción se puede deshabilitar. Como Firefox es genial y IE apesta, bueno, puedes adivinar por qué :) tienes ese problema. Use css para oscurecer el texto de esa opción.

y luego en jquery hacer algo como esto.

$('#SCOPE').change(function(){ 
    if($('#SCOPE option[value="'+$(this).val()+'"]').attr('disabled') == 'disabled'){ 
    alert('Its disabled you cannot select this option'); 
    } 
}); 

BTW. Verifique el código porque no lo he probado :)

0

Mi opinión es un poco diferente a otras respuestas.

El objetivo no es ocultar las opciones, sino simplemente desactivarlas (para mantener la IU constante).

Mi Escenario:

tengo varias selecciona en una forma y cuando un usuario selecciona una opción en una de las selecciona las otras selecciona debería desactivar esta opción y viceversa. El usuario tiene restringida la selección de la misma opción que ya está seleccionada. Normalmente desactivamos la opción pero para IE 7 que no la admite. El usuario también tiene la opción de agregar nuevas selecciones.

Solución:

En carga:

Si el navegador es Internet Explorer 7 a continuación, al rellenar los los selecciona y deshabilitar las opciones ya seleccionados en otras selecciona Estoy añadiendo un atributo personalizado a la opción ("Data- ie7-disabled ") y también cambiando el color de las opciones desactivadas a '#cccccc' (que es el color estándar para las opciones desactivadas). Esto hace que la interfaz de usuario se vea igual en todos los navegadores.

En cambio:

guardo la opción anterior en una variable local (esto se guarda en el foco).

Cuando un usuario intenta cambiar una opción

usuario selecciona una nueva opción completa que no está seleccionado en cualquier otro desplegable. Luego recorro otras selecciones y cambio el color y agrego un atributo personalizado a esta opción seleccionada en otras selecciones.

Cuando el usuario selecciona una opción que ya está seleccionada (La opción que tiene color gris). Verifico si la opción tiene este atributo personalizado primero. Si tiene entonces> simplemente revertir la opción a la anterior con un mensaje de error que dice "Esta opción ya está seleccionada o BLAH BLAH".

Cuando el usuario cambia su opción existente a una nueva opción que no está seleccionada en ningún otro menú desplegable. Otra vez recorro todas las demás opciones de selección y elimino el color y el atributo personalizado.

Espero que esto ayude.

Cuestiones relacionadas