控件(DatePicker)
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:editor 阅读 373
最近听网友有时间控件的需求,所以就挤时间弄了一个,如果使用过程中问题可以加入QQ群(158840960),又可以在该博客留言,先谢谢各位啦,下面贴出该控件的代码,本人文采不好,说不了多少字,哈哈,请

最近听网友有时间控件的需求,所以就挤时间弄了一个,如果使用过程中问题可以加入QQ群(158840960), 又可以在该博客留言,  先谢谢各位啦, 下面贴出该控件的代码, 本人文采不好,说不了多少字, 哈哈,请见谅 

Easy.UI.DatePicker = Easy.extend(Easy.UI.Base, {
    height: 24,
    width: "auto",
    baseCls: "e-datepicker",
    days: [],
    format: Easy.Date.defaultDateFormater,
    closeAction: 'hide',
    constructor: function (cfg) {
        Easy.apply(this, cfg);
        Easy.UI.DatePicker.superclass.constructor.call(this);
    },
    initComponent: function () {
        var me = this, btns = [];
        var date = me.value = me.value || new Date();
        btns = [me.create({
            tag: 'a',
            href: 'javascript:void(0);',
            cls: 'year',
            html: ' ',
            id: 'cutYear'
        }), me.create({
            tag: 'a',
            href: 'javascript:void(0);',
            cls: 'month',
            html: ' ',
            id: 'cutMonth'
        }), me.create({
            tag: 'a',
            href: 'javascript:void(0);',
            cls: 'month',
            html: ' ',
            id: 'addMonth'
        }), me.create({
            tag: 'a',
            href: 'javascript:void(0);',
            cls: 'year',
            html: ' ',
            id: 'addYear'
        })];
        Easy.DOM.on(btns[0], 'click', function () {
            var date = me.value;
            date.setFullYear(date.getFullYear() - 1);
            me.changeDate.call(me, date);
        });
        Easy.DOM.on(btns[1], 'click', function () {
            var date = me.value;
            date.setMonth(date.getMonth() - 1);
            me.changeDate.call(me, date);
        });
        Easy.DOM.on(btns[2], 'click', function () {
            var date = me.value;
            date.setMonth(date.getMonth() + 1);
            me.changeDate.call(me, date);
        });
        Easy.DOM.on(btns[3], 'click', function () {
            var date = me.value;
            date.setFullYear(date.getFullYear() + 1);
            me.changeDate.call(me, date);
        });

        var m = me.monthCtl = me.create({
            tag: 'input',
            cls: 'month',
            value: me.getMonth.call(me, date)
        }),
        y = me.yearCtl = me.create({
            tag: 'input',
            cls: 'year',
            value: me.getYear.call(me, date)
        });


        me.wrap = me.create({
            tag: 'div',
            cls: me.baseCls,
            children: [{
                tag: 'div',
                cls: 'e-datepicker-yearbar',
                children: [{
                    tag: 'div',
                    cls: 'e-datepicker-left-button',
                    children: [btns[0], btns[1]]
                }, {
                    tag: 'div',
                    cls: 'e-datepicker-middle-button',
                    children: [m, y]
                }, {
                    tag: 'div',
                    cls: 'e-datepicker-right-button',
                    children: [btns[2], btns[3]]
                }]
            }, {
                tag: 'div',
                cls: 'e-datepicker-body',
                children: [{
                    tag: 'div',
                    cls: 'e-datepicker-week',
                    children: [{
                        tag: 'b',
                        html: '日'
                    }, {
                        tag: 'b',
                        html: '一'
                    }, {
                        tag: 'b',
                        html: '二'
                    }, {
                        tag: 'b',
                        html: '三'
                    }, {
                        tag: 'b',
                        html: '四'
                    }, {
                        tag: 'b',
                        html: '五'
                    }, {
                        tag: 'b',
                        html: '六'
                    }]
                }, me.dayBody = me.create({
                    tag: 'div',
                    cls: 'e-datepicker-day'
                }), me.timeWrap = me.create({
                    tag: 'div'
                }), {
                    tag: 'div',
                    cls: 'e-clear'
                }]
            }]
        }, this.renderTo ? Easy.DOM.get(this.renderTo) : null);

        if (me.showTime) {
            var sure, time = me.timeCtls = [me.create({
                tag: 'input',
                type: 'text',
                name: 'hour',
                value: date.getHours()
            }), me.create({
                tag: 'span',
                html: ':'
            }), me.create({
                tag: 'input',
                type: 'text',
                name: 'minute',
                value: date.getMinutes()
            }), me.create({
                tag: 'span',
                html: ':'
            }), me.create({
                tag: 'input',
                type: 'text',
                name: 'second',
                value: date.getSeconds()
            })];
            me.create({
                tag: 'div',
                cls: 'e-datepicker-time-wrap',
                children: [{
                    tag: 'label',
                    html: '时间:'
                }, {
                    tag: 'div',
                    cls: 'e-datepicker-time',
                    children: time
                }, sure = me.create({
                    tag: 'input',
                    type: 'button',
                    value: '确定'
                })]
            }, me.timeWrap);
            Easy.DOM.on(sure, "click", function () {
                var h = time[0].value, m = time[2].value, s = time[4].value, v = me.value;
                me.value = new Date(Date.parse(Easy.Date.format(v, 'yyyy/MM/dd ') + h + ":" + m + ":" + s));
                me.setValue.call(me);
                me[me.closeAction].call(me);
            });
        }

        me.renderDay.call(me, date);
        if (me.renderTo) {
            me.isRender = true;
        }
    },
    renderDay: function (date) {
        var me = this, dates = me.days = [], selectDay = date.getDate();
        me.dayBody.innerHTML = "";
        me.monthCtl.value = me.getMonth(date);
        me.yearCtl.value = me.getYear(date);
        if (me.showTime) {
            me.timeCtls[0].value = date.getHours();
            me.timeCtls[2].value = date.getMinutes();
            me.timeCtls[4].value = date.getSeconds();
        }
        var buidDate = function (day, moth, year, md) {
            var rt = day;
            var r = me.create({
                tag: 'div',
                cls: 'e-datepicker-date-wrap'
            }), cn, start = 7;
            if (day == 1) {
                var index = new Date(Date.parse(year + "/" + moth + "/1")).getDay();
                var pmd = Easy.Date.getMaxDay(year, moth - 1);
                for (var i = pmd - index + 1; i <= pmd; i++) {
                    var d = me.create({
                        tag: 'a',
                        href: 'javascript:void(0);',
                        month: moth - 1,
                        cls: 'e-datepicker-date-gray',
                        html: i
                    }, r);
                    dates.push(d);
                    start--;
                    Easy.DOM.on(d, "click", function (dom) {
                        if (me.fireEvent("select", me, dom)) {
                            Easy.each(me.days, function (dd) {
                                if (dd == dom) {
                                    Easy.DOM.addClass(dom, "e-datepicker-selected");
                                } else {
                                    Easy.DOM.removeClass(dd, "e-datepicker-selected");
                                }
                            });
                            me.selectChange.call(me, dom, moth - 1);
                        }
                        return false;
                    });
                }
                for (var i = 1; i <= start; i++) {
                    var d = me.create({
                        tag: 'a',
                        href: 'javascript:void(0);',
                        month: moth,
                        html: i
                    }, r);
                    dates.push(d);
                    if (selectDay == i) {
                        Easy.DOM.addClass(d, "e-datepicker-selected");
                    }
                    rt = i;
                    Easy.DOM.on(d, "click", function (dom) {
                        if (me.fireEvent("select", me, dom)) {
                            Easy.each(me.days, function (dd) {
                                if (dd == dom) {
                                    Easy.DOM.addClass(dom, "e-datepicker-selected");
                                } else {
                                    Easy.DOM.removeClass(dd, "e-datepicker-selected");
                                }
                            });
                            me.selectChange.call(me, dom, moth);
                        }
                        return false;
                    });
                }
            } else {
                var last = 0;
                for (var i = day; i < day + 7; i++) {
                    if (i <= md) {
                        var d = me.create({
                            tag: 'a',
                            href: 'javascript:void(0);',
                            month: moth,
                          

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2