Drop-Down list
by Nidhi Soni
HTML
<select name="country_id" id="country_id" tabindex="1">
<option value="">Search </option>
<option value="1">USA</option>
<option value="9">Canada</option>
<option value="2">France</option>
<option value="3">Spain</option>
<option value="6">Bulgaria</option>
</select>
CSS
@CHARSET "UTF-8";
.sbHolder{
background-color: #F3F3F3;
border: 1px solid #CFCFCF;
font-family: Arial,sans-serif;
font-size: 12px;
font-weight: normal;
height: 29px;
position: relative;
width: 260px;
border-radius:5px;
}
.sbHolder:focus .sbSelector{
}
.sbSelector{
display: block;
height: 30px;
left: 0;
line-height: 30px;
outline: none;
overflow: hidden;
position: absolute;
text-indent: 10px;
top: 0;
width: 170px;
}
.sbSelector:link, .sbSelector:visited, .sbSelector:hover{
color: #7d7d7d;
outline: none;
text-decoration: none;
font-size:14px;
}
.sbToggle{
background: url(http://oi59.tinypic.com/warg3o.jpg) 0 -116px no-repeat;
display: block;
height: 30px;
outline: none;
position: absolute;
right: 0;
top: 0;
width: 30px;
}
.sbToggle:hover{
background: url(http://oi59.tinypic.com/warg3o.jpg) 0 -167px no-repeat;
}
.sbToggleOpen{
background: url(http://oi59.tinypic.com/warg3o.jpg) 0 -16px no-repeat;
}
.sbToggleOpen:hover{
background: url(http://oi59.tinypic.com/warg3o.jpg) 0 -66px no-repeat;
}
.sbHolderDisabled{
background-color: #3C3C3C;
border: solid 1px #515151;
}
.sbHolderDisabled .sbHolder{
}
.sbHolderDisabled .sbToggle{
}
.sbOptions{
background-color: #F3F3F3;
border: 1px solid #CFCFCF;
list-style: none outside none;
left: -1px;
margin: 0px;
padding: 0px;
position: absolute;
top: 30px;
width: 260px;
z-index: 1;
overflow-y: auto;
}
.sbOptions li{
padding: 0px 7px;
border-bottom: 1px solid #DEDEDE;
border-top: 1px solid #FDFDFD;
}
.sbOptions li:hover{
background:#dfdfdf;
}
.sbOptions a{
display: block;
outline: none;
padding: 7px 0 7px 3px;
}
.sbOptions a:link, .sbOptions a:visited{
color: #656565;
text-decoration: none;
font-size:12px;
}
.sbOptions a:hover,
.sbOptions a:focus,
.sbOptions a.sbFocus{
color: #7d7d7d;
}
.sbOptions li.last a{
border-bottom: none;
}
.sbOptions .sbDisabled{
border-bottom: dotted 1px #515151;
color: #999;
display: block;
padding: 7px 0 7px 3px;
}
.sbOptions...
JavaScript
(function ($, undefined) {
var PROP_NAME = 'selectbox',
FALSE = false,
TRUE = true;
function Selectbox() {
this._state = [];
this._defaults = {
classHolder: "sbHolder",
classHolderDisabled: "sbHolderDisabled",
classSelector: "sbSelector",
classOptions: "sbOptions",
classGroup: "sbGroup",
classSub: "sbSub",
classDisabled: "sbDisabled",
classToggleOpen: "sbToggleOpen",
classToggle: "sbToggle",
classFocus: "sbFocus",
speed: 200,
effect: "slide",
onChange: null,
onOpen: null,
onClose: null
};
}
$.extend(Selectbox.prototype, {
_isOpenSelectbox: function (target) {
if (!target) {
return FALSE;
}
var inst = this._getInst(target);
return inst.isOpen;
},
_isDisabledSelectbox: function (target) {
if (!target) {
return FALSE;
}
var inst = this._getInst(target);
return inst.isDisabled;
},
_attachSelectbox: function (target, settings) {
if (this._getInst(target)) {
return FALSE;
}
var $target = $(target),
self = this,
inst = self._newInst($target),
sbHolder, sbSelector, sbToggle, sbOptions,
s = FALSE, optGroup = $target.find("optgroup"), opts = $target.find("option"), olen = opts.length;
$target.attr("sb", inst.uid);
$.extend(inst.settings, self._defaults, settings);
self._state[inst.uid] = FALSE;
$target.hide();
function closeOthers() {
var key, sel,
uid = this.attr("id").split("_")[1];
for (key in self._state) {
if (key !== uid) {
if (self._state.hasOwnProperty(key)) {
sel = $("select[sb='" + key + "']")[0];
if (sel) {
self._closeSelectbox(sel);
}
}
}
}
}
sbHolder = $("<div>", {
"id": "sbHolder_" + inst.uid,
"class": inst.settings.classHolder,
"tabindex": $target.attr("tabindex")
});
sbSelector = $("<a>", {
"id": "sbSelector_" + inst.uid,
"href": "#",
"class":...