Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
在bootstrap中的时间选择器有两种:dateTimePicker和dateRangePicker
1、dateTimePicker好像是官方嫡插件:
需要的文件:
<linkrel="stylesheet"href="css/bootstrap-datetimepicker.min.css"> <scriptsrc="js/bootstrap-datetimepicker.min.js"></script> <scriptsrc="js/bootstrap-datetimepicker.zh-CN.js"></script> <scriptsrc="js/moment.min.js"></script>
API直接参考:http://www.bootcss.com/p/bootstrap-datetimepicker/
2、dateRangePicker好像是第三方插件,它最终的是可以实现时间段的选择。
需要的文件:
<linkrel="stylesheet"href="css/daterangepicker-bs3.css"> <scriptsrc="js/daterangepicker.js"></script> <scriptsrc="js/moment.min.js"></script>
html代码:
<divclass="container-fluid"> <divclass="row-fluid"style="margin-top:5px"> <divclass="span4"> <divclass="control-group"> <labelclass="control-label"> 日期: </label> <divclass="controls"> <divid="reportrange"class="pull-leftdateRange"style="width:350px"> <iclass="glyphiconglyphicon-calendarfafa-calendar"></i> <spanid="searchDateRange"></span> <bclass="caret"></b> </div> </div> </div> </div> </div> </div>
js代码:
<scripttype="text/javascript">
$(document).ready(function(){
//时间插件
$('#reportrangespan').html(moment().subtract('hours',1).format('YYYY-MM-DDHH:mm:ss')+'-'+moment().format('YYYY-MM-DDHH:mm:ss'));
$('#reportrange').daterangepicker(
{
//startDate:moment().startOf('day'),
//endDate:moment(),
//minDate:'01/01/2012',//最小时间
maxDate:moment(),//最大时间
dateLimit:{
days:30
},//起止时间的最大间隔
showDropdowns:true,
showWeekNumbers:false,//是否显示第几周
timePicker:true,//是否显示小时和分钟
timePickerIncrement:60,//时间的增量,单位为分钟
timePicker12Hour:false,//是否使用12小时制来显示时间
ranges:{
//'最近1小时':[moment().subtract('hours',1),moment()],
'今日':[moment().startOf('day'),moment()],
'昨日':[moment().subtract('days',1).startOf('day'),moment().subtract('days',1).endOf('day')],
'最近7日':[moment().subtract('days',6),moment()],
'最近30日':[moment().subtract('days',29),moment()]
},
opens:'right',//日期选择框的弹出位置
buttonClasses:['btnbtn-default'],
applyClass:'btn-smallbtn-primaryblue',
cancelClass:'btn-small',
format:'YYYY-MM-DDHH:mm:ss',//控件中from和to显示的日期格式
separator:'to',
locale:{
applyLabel:'确定',
cancelLabel:'取消',
fromLabel:'起始时间',
toLabel:'结束时间',
customRangeLabel:'自定义',
daysOfWeek:['日','一','二','三','四','五','六'],
monthNames:['一月','二月','三月','四月','五月','六月',
'七月','八月','九月','十月','十一月','十二月'],
firstDay:1
}
},function(start,end,label){//格式化日期显示框
$('#reportrangespan').html(start.format('YYYY-MM-DDHH:mm:ss')+'-'+end.format('YYYY-MM-DDHH:mm:ss'));
});
//设置日期菜单被选项--开始--
/*
vardateOption;
if("${riqi}"=='day'){
dateOption="今日";
}elseif("${riqi}"=='yday'){
dateOption="昨日";
}elseif("${riqi}"=='week'){
dateOption="最近7日";
}elseif("${riqi}"=='month'){
dateOption="最近30日";
}elseif("${riqi}"=='year'){
dateOption="最近一年";
}else{
dateOption="自定义";
}
$(".daterangepicker").find("li").each(function(){
if($(this).hasClass("active")){
$(this).removeClass("active");
}
if(dateOption==$(this).html()){
$(this).addClass("active");
}
});*/
//设置日期菜单被选项--结束--
})
</script>
但是这里的月份汉化存在问题,建议需要去moment.min.js文件里面去修改。
也可以在后期汉化,比较完整的代码:
vartable;
$(function(){
table=$('#example').DataTable({
"ajax":{
"url":"/example/resources/server_processing_customCUrl.php",
"data":function(d){
//添加额外的参数传给服务器
d.extra_search=$('#reportrangespan').html();
}},
"processing":true,
"serverSide":true,
"language":{
"sProcessing":"处理中...",
"sLengthMenu":"显示_MENU_项结果",
"sZeroRecords":"没有匹配结果",
"sInfo":"显示第_START_至_END_项结果,共_TOTAL_项",
"sInfoEmpty":"显示第0至0项结果,共0项",
"sInfoFiltered":"(由_MAX_项结果过滤)",
"sInfoPostFix":"",
"sSearch":"搜索:",
"sUrl":"",
"sEmptyTable":"表中数据为空",
"sLoadingRecords":"载入中...",
"sInfoThousands":",",
"oPaginate":{
"sFirst":"首页",
"sPrevious":"上页",
"sNext":"下页",
"sLast":"末页"
},
"oAria":{
"sSortAscending":":以升序排列此列",
"sSortDescending":":以降序排列此列"
}
},
"dom":
"<'row'<'span9'l<'#mytoolbox'>><'span3'f>r>"+
"t"+
"<'row'<'span6'i><'span6'p>>",
initComplete:initComplete
});
});
/**
*表格加载渲染完毕后执行的方法
*@paramdata
*/
functioninitComplete(data){
vardataPlugin=
'<divid="reportrange"class="pull-leftdateRange"style="width:400px;margin-left:10px">'+
'日期:<iclass="glyphiconglyphicon-calendarfafa-calendar"></i>'+
'<spanid="searchDateRange"></span>'+
'<bclass="caret"></b></div>';
$('#mytoolbox').append(dataPlugin);
//时间插件
$('#reportrangespan').html(moment().subtract('hours',1).format('YYYY-MM-DDHH:mm:ss')+'-'+moment().format('YYYY-MM-DDHH:mm:ss'));
$('#reportrange').daterangepicker(
{
//startDate:moment().startOf('day'),
//endDate:moment(),
//minDate:'01/01/2012',//最小时间
maxDate:moment(),//最大时间
dateLimit:{
days:30
},//起止时间的最大间隔
showDropdowns:true,
showWeekNumbers:false,//是否显示第几周
timePicker:true,//是否显示小时和分钟
timePickerIncrement:60,//时间的增量,单位为分钟
timePicker12Hour:false,//是否使用12小时制来显示时间
ranges:{
//'最近1小时':[moment().subtract('hours',1),moment()],
'今日':[moment().startOf('day'),moment()],
'昨日':[moment().subtract('days',1).startOf('day'),moment().subtract('days',1).endOf('day')],
'最近7日':[moment().subtract('days',6),moment()],
'最近30日':[moment().subtract('days',29),moment()]
},
opens:'right',//日期选择框的弹出位置
buttonClasses:['btnbtn-default'],
applyClass:'btn-smallbtn-primaryblue',
cancelClass:'btn-small',
format:'YYYY-MM-DDHH:mm:ss',//控件中from和to显示的日期格式
separator:'to',
locale:{
applyLabel:'确定',
cancelLabel:'取消',
fromLabel:'起始时间',
toLabel:'结束时间',
customRangeLabel:'自定义',
daysOfWeek:['日','一','二','三','四','五','六'],
monthNames:['一月','二月','三月','四月','五月','六月',
'七月','八月','九月','十月','十一月','十二月'],
firstDay:1
}
},function(start,end,label){//格式化日期显示框
$('#reportrangespan').html(start.format('YYYY-MM-DDHH:mm:ss')+'-'+end.format('YYYY-MM-DDHH:mm:ss'));
});
//设置日期菜单被选项--开始--
vardateOption;
if("${riqi}"=='day'){
dateOption="今日";
}elseif("${riqi}"=='yday'){
dateOption="昨日";
}elseif("${riqi}"=='week'){
dateOption="最近7日";
}elseif("${riqi}"=='month'){
dateOption="最近30日";
}elseif("${riqi}"=='year'){
dateOption="最近一年";
}else{
dateOption="自定义";
}
$(".daterangepicker").find("li").each(function(){
if($(this).hasClass("active")){
$(this).removeClass("active");
}
if(dateOption==$(this).html()){
$(this).addClass("active");
}
});
//设置日期菜单被选项--结束--
//选择时间后触发重新加载的方法
$("#reportrange").on('apply.daterangepicker',function(){
//当选择时间后,出发dt的重新加载数据的方法
table.ajax.reload();
//获取dt请求参数
varargs=table.ajax.params();
console.log("额外传到后台的参数值extra_search为:"+args.extra_search);
});
functiongetParam(url){
vardata=decodeURI(url).split("?")[1];
varparam={};
varstrs=data.split("&");
for(vari=0;i<strs.length;i++){
param[strs[i].split("=")[0]]=strs[i].split("=")[1];
}
returnparam;
}
}
幸福小彩蛋:
在网上搜索dateranggepicker的资料时,会找到一个比较官方的网站:http://www.daterangepicker.com/,api全面,但是实际的操作习惯并不便利;所以我更建议daterangepicker-bs3。
如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程Bootstrap实战教程
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。