<html>
<head>
<style type="text/css">
.DHTML_Select_Control{
width: 150px;
height: 100px;
overflow-x: none;
overflow-y: auto;
border-left: 3px inset #DDDDDD;
border-top: 3px inset #DDDDDD;
border-right: 3px inset #EEEEEE;
border-bottom: 3px inset #EEEEEE;
}
.DHTML_Select_Option{
font-family: Helvetica;
font-size: smaller;
color: #000000;
}
.DHTML_Select_Option_Selected{
font-family: Helvetica;
font-size: smaller;
color: #FFFFFF;
background: #000066;
}
.DHTML_Select_Option_Clicked{
font-family: Helvetica;
font-size: smaller;
color: #FFFFFF;
background: #000066;
border: 1px dotted #FFFFFF;
}
</style>
<script type="text/javascript" language="JavaScript">
//document.onselectstart=new Function ("return false");
var option_last_clicked;
function handleSelectClick(objClickedOn, strHiddenFieldID){
event.cancelBubble = true;
var objTheOption = event.srcElement;
if(objTheOption != objClickedOn){
var strTheOptionValue = objTheOption.value;
if(!event.ctrlKey){
if(!event.shiftKey){
//neither shift or ctrl were held down during the click
for(var i = 0; i < objClickedOn.childNodes.length; i++){
var currNode = objClickedOn.childNodes.item(i);
currNode.className = 'DHTML_Select_Option';
}
objTheOption.className = 'DHTML_Select_Option_Clicked';
option_last_clicked = objTheOption;
}
else{
//only shift key present
for(var i = 0; i < objClickedOn.childNodes.length; i++){
var currNode = objClickedOn.childNodes.item(i);
currNode.className = 'DHTML_Select_Option';
}
var lastClickedOnPos = option_last_clicked.sourceIndex;
var thisClickedOnPos = objTheOption.sourceIndex;
if(lastClickedOnPos < thisClickedOnPos){
for(var i = lastClickedOnPos; i <= thisClickedOnPos; i++){
document.all[i].className = 'DHTML_Select_Option_Selected';
}
}
else{
for(var i = lastClickedOnPos; i <= thisClickedOnPos; i++){
document.all[i].className = 'DHTML_Select_Option_Selected';
}
}
objTheOption.className = 'DHTML_Select_Option_Clicked';
option_last_clicked = objTheOption;
}
}
else{
// only ctrl key present or ctrl and shift both present, ctrl to take precedence
option_last_clicked.className = 'DHTML_Select_Option_Selected';
objTheOption.className = 'DHTML_Select_Option_Clicked';
option_last_clicked = objTheOption;
}
}
//compile the value and write it out to the hidden field
var hidField = document.getElementById(strHiddenFieldID);
var strValueList = ''
for(var i = 0; i < objClickedOn.childNodes.length; i++){
var currNode = objClickedOn.childNodes.item(i);
if(currNode.className != 'DHTML_Select_Option'){
if(strValueList == ''){
strValueList = currNode.value;
}
else{
strValueList = strValueList + ';' + currNode.value;
}
}
}
hidField.value = strValueList;
}
</script>
</head>
<body>
<div class="DHTML_Select_Control" onselectstart="return false;" onclick="handleSelectClick(this, 'myhiddenfield'); return false; ">
<div class="DHTML_Select_Option" value="Option 1 value">Option 1 text is quite long</div>
<div class="DHTML_Select_Option" value="Option 2 value">Option 2 text is a little bit longer</div>
<div class="DHTML_Select_Option" value="Option 3 value">Option 3 text is really really really really long</div>
<div class="DHTML_Select_Option" value="Option 4 value">Option 4 text is absolutely, positively, without a doubt, the longest option here</div>
<div class="DHTML_Select_Option" value="Option 5 value">short option</div>
</div>
<!-- Change this to a hidden field or put it in a hidden div tag -->
<input type="text" id="myhiddenfield" value="">
</body>
</html>