Monday, July 28, 2008

disabled option seçeneği ve i.e. karmaşası

aşağıdaki kodu hemen hemen çoğu çalışmamda kullanmışımdır. yani bir seçeneği etkisizleştirilmiş combobox denebilir.

<select> <option>abcde</option> <option disabled="'disabled'">abcde2</option> <option>abcde3</option></select>


genelde çalışamalarımı farklı browserlarda denerim hele ki i.e. de mutlaka denerim.
bi hata gariplik yapacağından emin olduğum için.

ama bu kadar bi garip olay olamaz. option için disabled özelliği i.e. de hiç çalışmıyomuş meğer.

şoku atlattıktan sonra birinin şu çözümünü gördüm (aynı konuya değinen siteler google link )

<!--[if lte IE 7]>
<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]-->



(tabi fonksiyonu window.attachEvent yerine body içinde onload içinde yazabilirsiniz)

No comments: