The DHTML Psuedo Select was developed to get around this annoying "feature" of the select element and still maintain the same look and functionality.
Important: This version works in MSIE and Gecko/Moz but you MUST declare an XHTML doctype. View the source of this document if you dont know what that is.
<style type="text/css"> #dhtml_select { font-family:verdana; font-size:10px; width:146px; height:18px; border-style:inset; border-width:2px; position:relative; } .m_dhtml_select_options { position:relative; background-color:#FFFFFF; padding:2px; text-align:left; border-style:none; } .dhtml_href { width:100%;} .dhtml_href:link { color:#000000;text-decoration:none;} .dhtml_href:visited { text-decoration:none;color:#000000;} .dhtml_href:hover { text-decoration:none; color:#FFFFFF; background-color:darkblue; } .dhtml_href:active { text-decoration:none;} #dhtml_select_dummy { position:absolute; top:0px; left:0px; width:100%; padding:2px; } </style> <script language="javascript"> // this array controls the values and text for the options. The first values is the text, the second is the value. dhtml_optionsArray = new Array(["option 1",1],["option 2",2],["option 3",3],["option 4",4]); isExpanded = false; clicked = false; //constants // these match the properties as defined in the style sheet. FONT_SIZE = 10; SELECT_HEIGHT = 18; SELECT_WIDTH = 140; function buttonClicked() { xDoc = document.getElementById; obj = document.getElementById("dhtml_select_options"); if(!isExpanded) { obj.style.display="block"; isExpanded = true; if(!clicked) { clicked=true; obj.style.position = "absolute"; obj.style.top = (obj.style.top+SELECT_HEIGHT) + "px"; obj.style.width = SELECT_WIDTH + "px"; obj.style.borderStyle = "solid"; obj.style.borderWidth="1px;"; rPadding = dhtml_optionsArray.length*2; obj.style.height = (((dhtml_optionsArray.length) * FONT_SIZE) + rPadding) + "px"; mHTML = ""; for(i=0;i<dhtml_optionsArray.length;i++)mHTML += "<a class=\"dhtml_href\" href=\"javascript:handleSelect(" + i + ");\">" + dhtml_optionsArray[i][0] + "</a><br>"; obj.innerHTML += mHTML; } } else { document.getElementById("dhtml_select_dummy").style.display="block"; obj.style.display="none"; isExpanded = false; } } function handleSelect(mID) { isExpanded = false; document.forms.frm1.dhtml_select_value.value = dhtml_optionsArray[mID][1]; document.getElementById("dhtml_select_dummy").innerHTML = dhtml_optionsArray[mID][0]; document.getElementById("dhtml_select_dummy").style.display="block"; document.getElementById("dhtml_select_options").style.display="none"; } function doCover() { if(document.getElementById("cover").style.display == "block") { document.getElementById("cover").style.display = "none"; } else { document.getElementById("cover").style.display = "block"; } } </script>
DHTML Pseudo Select v2.0 last revision: 08.20.2003 steve@slayeroffice.com http://www.slayeroffice.com |