返回

jQuery UI Datepicker扩展指南:轻松获取时分秒

前端

有时候我们不仅需要datepicker选择日期还需要选择时分秒,但是 jquery ui datepicker 不支持时分秒,本文提供了一个扩展方案。

Datepicker的准备工作

准备css文件

.ui-timepicker-div dl { 
    text-align: left; 
}

.ui-timepicker-div dl dt { 
    height: 25px; 
    margin-bottom: -25px; 
}

.ui-timepicker-div dl dd { 
    margin: 0 10px 10px 65px; 
}

.ui-timepicker-div td { 
    font-size: 90%; 
}

准备js文件

// 下拉菜单展示或隐藏控制
$(document).on('click', '.ui-timepicker-div', function(e) {
    e.stopPropagation();
});

// 输入框不允许直接输入
$(document).on('keydown', '.ui-timepicker-input', function(e) {
    e.preventDefault();
});

$.fn.datetimepicker = function(options){
    options = $.extend({}, $.fn.datetimepicker.defaults, options);

    return this.each(function() {
        var $this = $(this);
        $this.datetimepicker(options);
    });
};

$.fn.datetimepicker.defaults = {
    showOn: "button",
    buttonImage: "images/calendar.gif",
    buttonImageOnly: true,
    changeYear: true,
    changeMonth: true,
    dateFormat: "yy-mm-dd",
    timeFormat: "hh:mm:ss",
    showSecond: true,
    timeOnly: false
};

调用插件

$("#datetimepicker").datetimepicker();

使用

添加插件后就会发现时间选择框已经可以用了,效果如下。

<input type="text" id="datetimepicker" />

扩展时分秒功能的代码

代码如下:

(function($){
    $.fn.datetimepicker = function(options){
        options = $.extend({}, $.fn.datetimepicker.defaults, options);

        return this.each(function() {
            var $this = $(this);
            $this.datetimepicker(options);
        });
    };

    $.fn.datetimepicker.defaults = {
        showOn: "button",
        buttonImage: "images/calendar.gif",
        buttonImageOnly: true,
        changeYear: true,
        changeMonth: true,
        dateFormat: "yy-mm-dd",
        timeFormat: "hh:mm:ss",
        showSecond: true,
        timeOnly: false
    };
})(jQuery);

总结

通过以上方法,我们就完成了对jQuery UI Datepicker的扩展,现在它已经支持时分秒的选择了,并且在页面中效果更好。