Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

micox

Simulando options disabled no IE - solução

Recommended Posts

Fonte: Simulando options disabled no IE

 

Bora lá sem muito papo:

 

Se você colocar um atributo "disabled" em um option ele deverá ficar desabilitado, ou seja, indisponível. Exemplo:

<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.

 

O que fazer? Bom, vamos então 'simular' que o option está desabilitado via javascript.

 

Está abaixo:

<!--[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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Micox, beleza !

E quando eu precisar usar junto com este código um onchange no <select>, como que faço ?

 

Mas se não puder usar algum onchange junto, não adianta muita coisa, porque a maioriadas vezes você vai usar um onchange para desabilitar os options. A não ser que funcione com um onchange puxado externamente através do onload da página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se precisar usar junto com um onchange no select é só colocar após o onchange.

 

Exemplo:

 

<select onchange='alert("mudei");ativaOptionsDisabled()'>

</select>

 

Lembre-se que eu disse que:

Esta função substitui algum outro evento onchange que tenha sido colocado antes pra algum option , mas não afeta em nada onchange's que foram colocados na tag select

 

valeu :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.