Ativando options disabled no IE
Atributo disabled pra options no ie
Escrito por Micox em
JavaScript e Ajax. Data: 16/05/2007
Licença: Alguns direitos reservados. Dar créditos ao autor e linkar este original
Ver tópico original no fórum.
Bora lá sem muito papo:
Se você colocar um atributo "disabled" em um option ele deverá ficar desabilitado, ou seja, indisponível. Exemplo:
CODE
<select>
<option>opt 1</option>
<option disabled='disabled'>opt 2</option>
<option>opt 3</option>
</select>
Isto acontece bem nos navegadores padrão.
No nosso velho amigo IE não acontece. Teste e veja.
Inspirado pela
dúvida do nosso amigo Rafael, fui atrás do problema e não achei solução a não ser fazer uma função pra fazer o serviço completo.
Está abaixo:
CODE
<!--[if lte IE 6]>
<script>
function ativaOptionsDisabled(){
var sels = document.getElementsByTagName('select');
for(var i=0; i < sels.length; i++){
sels[i].onchange= function(){ //pra se mudar pro desabilitado
if(this.options[this.selectedIndex].disabled){
if(this.options.length<=1){
this.selectedIndex = -1;
}else if(this.selectedIndex < this.options.length - 1){
this.selectedIndex++;
}else{
this.selectedIndex--;
}
}
}
if(sels[i].options[sels[i].selectedIndex].disabled){
//se o selecionado atual é desabilitado chamo o onchange
sels[i].onchange();
}
for(var j=0; j < sels[i].options.length; j++){ //colocando o estilo
if(sels[i].options[j].disabled){
sels[i].options[j].style.color = '#CCC';
}
}
}
}
window.attachEvent("onload", ativaOptionsDisabled)
</script>
<![endif]-->
Pronto.
//Obs. Esta função substitui algum outro evento ONCHANGE que tenha sido colocado antes pra algum option.
Comentários:
Bermonruf disse:
Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).