美观DropDownList

CSS

.DrpBox_normal
{
    background:url(../../bg_input.gif) repeat-x bottom; /*图片路径可以自定义*/
    background-color:#ffffff;
    height:22px;
    line-height:22px;
    border:1px solid #afdae6;
    margin-left:2px;
    color:#4d4b4b;
    overflow:hidden;

}
.DrpBox_focus
{
    background:url(./bg_input.gif) repeat-x bottom;  /*图片路径可以自定义*/
    background-color:#ffffff;
    height:20px;
    line-height:20px;
    border:1px solid #afdae6;
    border-left:4px solid #33cc00;
    color:#4d4b4b;
    overflow:hidden;
}
.DrpBtn
{
    width:20px;
    height:22px;
    line-height:22px;
    float:left;
    background-image:url(./ico_drp_btn.gif);  /*图片路径可以自定义*/

    background-repeat:no-repeat;
    background-position:center;
}
.DrpOptionsBox
{
    margin-left:2px;
    border:solid 1px #afdae6;
    position:absolute;
    background-color:White;
    clear:both;
    height:22px;
    line-height:22px;
}
.DrpOptions
{
    text-indent:2px;
    height:22px;
    line-height:22px;
    clear:both;
    overflow:hidden;
    clear:both;
}
.DrpOptionsSeled
{
    text-indent:2px;
    background-color:#afdae6;
    height:22px;
    line-height:22px;
    clear:both;
}
.DrpOptionsOver
{
    text-indent:2px;
    background-color:#d7ecf2;
    height:22px;
    line-height:22px;
    clear:both;
}

.sDrpBox_normal
{
    margin-left:2px;
    background-color:#ffffff;
    height:22px;
    line-height:22px;
    border:1px solid #afdae6;
    border-left:1px solid #afdae6;
    color:#4d4b4b;
    overflow:hidden;
}

.DrpInput_normal
{
    text-indent:4px;
    background-color:#ffffff;
    height:22px;
    line-height:22px;
    color:#4d4b4b;
    overflow:hidden;
    float:left;
}

 

JS

Function.prototype.BindForEvent = function() {
    var __m = this, object = arguments[0], args = new Array();
    for (var i = 1; i < arguments.length; i++) {
        args.push(arguments[i]);
    }

    return function(event) {
        return __m.apply(object, [(event || window.event)].concat(args));
    }
};

var Class = {
    create: function() {
        return function() {
            this.init.apply(this, arguments);
        }
    }
}

Object.extend = function(destination, source) {
    for (var property in source) {
        destination[property] = source[property];
    }
    return destination;
}

function Offset(e) {
    var t = e.offsetTop;
    var l = e.offsetLeft;
    var w = e.offsetWidth;
    var h = e.offsetHeight - 2;
    var f = '';

    while (e = e.offsetParent) {
        f += (e.id || e.className || e.tagName) + e.offsetTop + "---";
        t += e.offsetTop;
        l += e.offsetLeft;
    }
    //alert(f);
    return { top: t, left: l, width: w, height: h }
}

function $() {
    var target = arguments[0];
    if (typeof target == "object") {
        return target;
    }
    return document.getElementById(target);
}
var Comboxs = [];
var Combox = Class.create();
Combox.prototype = {
    DrpID: '',
    offset: null,
    DrpList: null,
    SetHeight: 22, //高
    box: null,
    input: null,
    Btn: null,
    Optionsbox: null,
    seledOption: null,
    seledText: '',
    seledValue: '',
    bJoin: false, //是否联动
    JoinID: null, //联动对象ID
    w: 0,
    inputW: 0,
    s: 1, // 0  编辑页使用  1列表页显示
    NumOption: 0,
    init: function(objID, w, inputW, s) {
        this.s = s || 0;
        this.DrpID = objID
        this.DrpList = $(objID);
        if (!this.DrpList) return;
        this.w = w;
        this.inputW = inputW;
        //this.offset = Offset(this.DrpList);
        Comboxs.push([this.DrpID, this]);
        if (this.DrpList.getAttribute("joinDrp") != null && this.DrpList.getAttribute("joinDrp") != "") {
            this.bJoin = true;
            this.JoinID = this.DrpList.getAttribute("joinDrp");
        }
        this.CreateBox();
    },
    CreateBox: function() {
        var Div = document.createElement("DIV");
        if (this.s == 0) {
            Div.className = "DrpBox_normal";
        }
        else {
            Div.className = "sDrpBox_normal";
        }
        Div.setAttribute("id", this.DrpList.id + "_" + "BOX");
        Div.style.width = this.w + "px";
        if (this.DrpList.style.display == 'none') {
            Div.style.display = 'none';
        }

        this.DrpList.style.display = 'none';
        this.box = Div;

        var parentobj = this.DrpList.parentNode;
        if (!parentobj) return;
        parentobj.insertBefore(Div, this.DrpList);
        this.CreateInput();
        this.CreateButton();
        this.CreateOptions();
    },
    CreateInput: function() {
        var Div = document.createElement("DIV");
        //Div.style.position ="absolute";
        Div.setAttribute("id", this.DrpList.id + "_" + "INPUT");
        Div.className = "DrpInput_normal";
        Div.style.width = this.inputW + "px";
        Div.style.overflow = 'hidden';
        this.box.appendChild(Div);
        this.input = Div;
        this.input.onmouseout = this.HidOptionBoxOutInput.BindForEvent(this.input, this);
    },
    CreateButton: function() {
        var Div = document.createElement("DIV");
        Div.className = "DrpBtn";
        Div.setAttribute("id", this.DrpList.id + "_" + "Btn");
        this.Btn = Div;
        this.box.appendChild(Div);
        this.Btn.onmouseout = this.HidOptionBoxOutInput.BindForEvent(this.Btn, this);
    },
    CreateOptions: function() {
        this.Optionsbox = null;
        var Div = document.createElement("DIV");
        Div.style.display = 'none';
        Div.style.width = this.w + "px";

        Div.className = "DrpOptionsBox";
        Div.setAttribute("id", this.DrpList.id + "_" + "Optionsbox");

        if (!browser.msie) {
            var f = Offset(this.box);
            Div.style.top = f.top + document.documentElement.scrollTop + this.SetHeight + "px";
            Div.style.left = f.left + "px";
        }
        var parentobj = this.DrpList.parentNode;
        if (!parentobj) return;
        parentobj.insertBefore(Div, this.DrpList);
        this.Optionsbox = Div;
        var Nums = this.DrpList.options.length;
        this.NumOption = Nums;

        for (var i = 0; i < Nums; i++) {
            var DivOp = document.createElement("DIV");
            DivOp.innerHTML = this.DrpList.options[i].innerHTML;
            DivOp.setAttribute("value", this.DrpList.options[i].value);
            DivOp.setAttribute("index", i);
            DivOp.style.cursor = "default";
            if (this.DrpList.options[i].selected) {
                DivOp.setAttribute("selected", "true");
                DivOp.className = "DrpOptionsSeled";
                this.seledOption = DivOp;
                this.seledText = DivOp.innerHTML;
                this.seledValue = DivOp.getAttribute("value");
                this.input.innerHTML = this.seledText;
            }
            else {
                DivOp.setAttribute("selected", "false");
                DivOp.className = "DrpOptions";
            }
            Div.appendChild(DivOp);
            DivOp.onmouseover = this.Option_onMouseover.BindForEvent(DivOp, DivOp, this);
            DivOp.onmouseout = this.Option_onMouseout.BindForEvent(DivOp, DivOp, this);
            DivOp.onclick = this.Option_onClick.BindForEvent(DivOp, DivOp, this);
        }
        if (Nums > 6) {
            Div.style.overflow = "auto";
            Div.style.height = this.SetHeight * 6 + "px";
        }
        else {
            Div.style.height = this.SetHeight * Nums + "px";
        }
        this.Optionsbox.onmouseout = this.HidOptionBoxEnt.BindForEvent(this.box, this);
        this.input.onclick = this.ShowOptionBox.BindForEvent(this.input, this);
        this.Btn.onclick = this.ShowOptionBox.BindForEvent(this.input, this);
    },
    Option_onMouseover: function() {
        var obj = arguments[1];
        if (obj.className == "DrpOptionsSeled") {
            return;
        }
        else {
            obj.className = "DrpOptionsOver";
        }
    },
    Option_onMouseout: function() {
        var obj = arguments[1];
        if (obj.className == "DrpOptionsSeled") {
            return;
        }
        else {
            obj.className = "DrpOptions";
        }
    },
    CloseCombox: function(ojbID) {
        for (var i = 0; i < Comboxs.length; i++) {
            if (Comboxs[i][0] == ojbID) {
                continue;
            }
            if (Comboxs[i][1].Optionsbox.style.display == '') {
                Comboxs[i][1].Optionsbox.style.display = 'none';
            }
        }
    },
    Option_onClick: function() {
        var opt = arguments[1];
        var obj = arguments[2];

        var sel = opt.getAttribute("selected");
        if (sel == 'false') {
            obj.seledOption.setAttribute("selected", "false");
            obj.seledOption.className = "DrpOptions";
            opt.setAttribute("selected", "true");
            opt.className = "DrpOptionsSeled";
            obj.seledOption = opt;
            obj.seledText = opt.innerHTML;
            obj.seledValue = opt.getAttribute("value");
            obj.input.innerHTML = obj.seledText;
        }
        var i = parseInt(opt.getAttribute("index"));
        obj.DrpList.options[i].selected = true;
        obj.HidOptionBox(obj);
        if (sel == 'false') {
            if (obj.DrpList.onchange) {
                obj.DrpList.onchange();
            }
            if (obj.bJoin) {
                for (var i = 0; i < Comboxs.length; i++) {
                    if (obj.JoinID == Comboxs[i][0]) {
                        Comboxs[i][1].CreateOptions();
                        break;
                    }
                }
            }
        }
        if (obj.DrpList.onblur) {
            obj.DrpList.onblur(obj.DrpList);
        }
    },
    ShowOptionBox: function() {
        var obj = arguments[1];
        obj.CloseCombox(obj.DrpID); //关闭打开得
        if (obj.Optionsbox.style.display == '') {
            obj.HidOptionBox(obj);
            if (obj.DrpList.onblur) {
                obj.DrpList.onblur(obj.DrpList);
            }
            return;
        }
        obj.Optionsbox.style.display = '';
        if (obj.DrpList.onfocus) {
            obj.DrpList.onfocus(obj.DrpList);
        }
        if (this.s == 0) {
            obj.box.className = "DrpBox_focus";
        }
    },
    HidOptionBox: function() {
        var obj = arguments[0];
        obj.Optionsbox.style.display = 'none';
        if (this.s == 0) {
            obj.box.className = "DrpBox_normal";
        }
    },
    IsOptionsboxUp: function() {
        alert(1);
    },
    HidOptionBoxEnt: function() {
        var obj = arguments[1];
        var evt = arguments[0];

        var boxOffset = Offset(obj.box);
        var left = boxOffset.left;
        var tops = boxOffset.top;
        var w = boxOffset.width;
        var h = obj.SetHeight * obj.NumOption;
        var scrlTop = document.documentElement.scrollTop;

        if (obj.NumOption > 6) {
            h = obj.SetHeight * 6;
        }
        if (evt.clientX > left && evt.clientX < (left + w) && evt.clientY + scrlTop > tops + 2 && evt.clientY + scrlTop < (tops + h + obj.SetHeight)) {
            return;
        }
        obj.Optionsbox.style.display = 'none';
        if (obj.s == 0) {
            obj.box.className = "DrpBox_normal";
        }
        if (obj.DrpList.onblur) {
            obj.DrpList.onblur(obj.DrpList);
        }
    },
    HidOptionBoxOutInput: function() {
        var obj = arguments[1];
        var evt = arguments[0];

        var boxOffset = Offset(obj.box);
        var left = boxOffset.left;
        var tops = boxOffset.top;
        var w = boxOffset.width;
        var h = boxOffset.height;
        var scrlTop = document.documentElement.scrollTop;
        if (evt.clientX > left && evt.clientX < (left + w) && evt.clientY + scrlTop > tops + 5) {
            return;
        }
        obj.Optionsbox.style.display = 'none';
        if (obj.s == 0) {
            obj.box.className = "DrpBox_normal";
        }
        if (obj.DrpList.onblur) {
            obj.DrpList.onblur(obj.DrpList);
        }
    }
};
var userAgent = navigator.userAgent.toLowerCase();
var browser = {
    opera: /opera/.test(userAgent),
    msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
    mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
};
function getEvent() {
    return window.event ? window.event : getEvent.caller.arguments[0];
};
function ResizeWin() {
    if (!browser.msie) {
        for (var i = 0; i < Comboxs.length; i++) {
            Comboxs[i][1].Optionsbox.style.top = Offset(Comboxs[i][1].box).top + 22 + "px";
            Comboxs[i][1].Optionsbox.style.left = Offset(Comboxs[i][1].box).left + "px";
        }
    }
}
if (!window.Event) {
    var Event = new Object();
}
Object.extend(Event, {
    add: function(element, name, observe, userCapture) {
        if (name == 'keypress' &&
        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
        || element.attachEvent))
            name = 'keydown';
        userCapture = userCapture || false;
        if (element.addEventListener) {
            element.addEventListener(name, observe, userCapture);
        }
        else if (element.attachEvent) {
            element.attachEvent('on' + name, observe);
        }
    }

})
Event.add(window, "resize", ResizeWin, true)

 

 

aspx页面
  <script language="javascript" type="text/javascript">
        new Combox("ddl_selectLineName",300,280);
        </script>

信息来源于网络没有经过使用暂时记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值