Revision: 6322
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at May 16, 2008 07:51 by localhorst
Initial Code
== HTML ================ <html> <head> <!--[if IE]> <style type="text/css"> select, option { behavior: url("disable.htc"); } </style> <![endif]--> </head> <body> <form> <select> <option>Option 1</option> <option>Option 2</option> <option disabled>Option 3</option> </select> </form> </body> </html> == disable.htc ================ <?xml version="1.0" encoding="ISO-8859-1"?> <PUBLIC:COMPONENT LIGHTWEIGHT="true"> <PUBLIC:ATTACH EVENT="ondocumentready" ONEVENT="onDocumentReady()" /> <PUBLIC:ATTACH EVENT="ondetach" ONEVENT="onDetach()" /> <SCRIPT type="text/javascript"> //<![CDATA[ var nLastSelectedIndex; var fOnChangeOriginal; // event handlers function onDocumentReady() { var sTag = element.tagName.toLowerCase(); if (sTag == "select") { attachEvent("onchange", onChangeSelect); attachEvent("onpropertychange", onPropertyChangeSelect); nLastSelectedIndex = element.selectedIndex; hackOnChange(); } else if (sTag == "option") { attachEvent("onpropertychange", onPropertyChangeOption); emulateOption(); } } function onDetach() { var sTag = element.tagName.toLowerCase(); if (sTag == "select") { detachEvent("onchange", onChangeSelect); detachEvent("onpropertychange", onPropertyChangeSelect); } else if (sTag == "option") { detachEvent("onpropertychange", onPropertyChangeOption); } } // function onChangeSelect() { if (element.options[element.selectedIndex].disabled) { element.selectedIndex = nLastSelectedIndex; } else { nLastSelectedIndex = element.selectedIndex; if (fOnChangeOriginal != undefined) { fOnChangeOriginal(); } } } function onPropertyChangeSelect() { var sChangedPropertyName = event.propertyName.toLowerCase(); if (sChangedPropertyName == "onchange") { hackOnChange(); } else if (sChangedPropertyName == "selectedindex") { // contributed by Zecc nLastSelectedIndex = element.selectedIndex; } } function onPropertyChangeOption() { var sChangedPropertyName = event.propertyName.toLowerCase(); if (sChangedPropertyName == "disabled") { emulateOption(); } } // hack onChange attribute of select tag function hackOnChange() { detachEvent("onpropertychange", onPropertyChangeSelect); fOnChangeOriginal = element.onchange; element.onchange = null; attachEvent("onpropertychange", onPropertyChangeSelect); } // emulate disabled option function emulateOption() { if (element.disabled) { element.style.color = "graytext"; } else { element.style.color = "menutext"; } } //]]> </SCRIPT> </PUBLIC:COMPONENT>
Initial URL
http://apptaro.seesaa.net/article/21140090.html
Initial Description
IE can't handle [ option disabled="disabled" ] tags, so this htc will help
Initial Title
disable select or option in IE
Initial Tags
ie
Initial Language
HTML