今天用到把select的option变灰,option有个disable属性,但是在ie中这个属性好像不好使,
于是在网上找个一个js方法.此方法重写了select的onfocus和onchange方法.
但是如果把变灰的一个option重新变灰原来的状态需要如下两步操作.
optionObject.disabled=true;
optionObject. = "graytext";
变灰的js方法
window.onload = function() { if (document.getElementsByTagName) { var s = document.getElementsByTagName("select"); if (s.length > 0) { window.select_current = new Array(); for (var i=0, select; select = s[i]; i++) { select.onfocus = function(){ window.select_current[this.id] = this.selectedIndex; } select.onchange = function(){ restore(this); } emulate(select); } } } }
function restore(e) { if (e.options[e.selectedIndex].disabled) { e.selectedIndex = window.select_current[e.id]; } } function emulate(e) { for (var i=0, option; option = e.options[i]; i++) { if (option.disabled) { option.style.color = "graytext"; } else { option.style.color = "menutext"; } } }
另外增加常用
<script type="text/javascript"> window.onload = function() { if (document.getElementsByTagName) { var s = document.getElementsByTagName("select"); if (s.length > 0) { window.select_current = new Array(); for (var i=0, select; select = s[i]; i++) { select.onfocus = function(){ window.select_current[this.id] = this.selectedIndex; } select.onchange = function(){ restore(this); } emulate(select); } } } } function restore(e) { if (e.options[e.selectedIndex].disabled) { e.selectedIndex = window.select_current[e.id]; } } function emulate(e) { for (var i=0, option; option = e.options[i]; i++) { if (option.disabled) { option.style.color = "graytext"; } else { option.style.color = "menutext"; } } }