Bootstrap時間選擇器datetimepicker和daterangepicker使用實例解析
在bootstrap中的時間選擇器有兩種:dateTimePicker和dateRangePicker
1、dateTimePicker好像是官方嫡插件:
需要的文件:
<link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css"> <script src="js/bootstrap-datetimepicker.min.js"></script> <script src="js/bootstrap-datetimepicker.zh-CN.js"></script> <script src="js/moment.min.js"></script>
API直接參考:http://www.bootcss.com/p/bootstrap-datetimepicker/
2、dateRangePicker好像是第三方插件,它最終的是可以實現(xiàn)時間段的選擇。
需要的文件:
<link rel="stylesheet" href="css/daterangepicker-bs3.css"> <script src="js/daterangepicker.js"></script> <script src="js/moment.min.js"></script>
html代碼:
<div class="container-fluid"> <div class="row-fluid" style="margin-top:5px"> <div class="span4"> <div class="control-group"> <label class="control-label"> 日期: </label> <div class="controls"> <div id="reportrange" class="pull-left dateRange" style="width:350px"> <i class="glyphicon glyphicon-calendar fa fa-calendar"></i> <span id="searchDateRange"></span> <b class="caret"></b> </div> </div> </div> </div> </div> </div>
js代碼:
<script type="text/javascript">
$(document).ready(function (){
//時間插件
$('#reportrange span').html(moment().subtract('hours', 1).format('YYYY-MM-DD HH:mm:ss') + ' - ' + moment().format('YYYY-MM-DD HH: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 : [ 'btn btn-default' ],
applyClass : 'btn-small btn-primary blue',
cancelClass : 'btn-small',
format : 'YYYY-MM-DD HH:mm:ss', //控件中from和to 顯示的日期格式
separator : ' to ',
locale : {
applyLabel : '確定',
cancelLabel : '取消',
fromLabel : '起始時間',
toLabel : '結(jié)束時間',
customRangeLabel : '自定義',
daysOfWeek : [ '日', '一', '二', '三', '四', '五', '六' ],
monthNames : [ '一月', '二月', '三月', '四月', '五月', '六月',
'七月', '八月', '九月', '十月', '十一月', '十二月' ],
firstDay : 1
}
}, function(start, end, label) {//格式化日期顯示框
$('#reportrange span').html(start.format('YYYY-MM-DD HH:mm:ss') + ' - ' + end.format('YYYY-MM-DD HH:mm:ss'));
});
//設(shè)置日期菜單被選項 --開始--
/*
var dateOption ;
if("${riqi}"=='day') {
dateOption = "今日";
}else if("${riqi}"=='yday') {
dateOption = "昨日";
}else if("${riqi}"=='week'){
dateOption ="最近7日";
}else if("${riqi}"=='month'){
dateOption ="最近30日";
}else if("${riqi}"=='year'){
dateOption ="最近一年";
}else{
dateOption = "自定義";
}
$(".daterangepicker").find("li").each(function (){
if($(this).hasClass("active")){
$(this).removeClass("active");
}
if(dateOption==$(this).html()){
$(this).addClass("active");
}
});*/
//設(shè)置日期菜單被選項 --結(jié)束--
})
</script>
但是這里的月份漢化存在問題,建議需要去moment.min.js文件里面去修改。
也可以在后期漢化,比較完整的代碼:
var table;
$(function () {
table = $('#example').DataTable({
"ajax": {
"url":"/example/resources/server_processing_customCUrl.php",
"data": function ( d ) {
//添加額外的參數(shù)傳給服務(wù)器
d.extra_search = $('#reportrange span').html();
}},
"processing": true,
"serverSide": true,
"language": {
"sProcessing": "處理中...",
"sLengthMenu": "顯示 _MENU_ 項結(jié)果",
"sZeroRecords": "沒有匹配結(jié)果",
"sInfo": "顯示第 _START_ 至 _END_ 項結(jié)果,共 _TOTAL_ 項",
"sInfoEmpty": "顯示第 0 至 0 項結(jié)果,共 0 項",
"sInfoFiltered": "(由 _MAX_ 項結(jié)果過濾)",
"sInfoPostFix": "",
"sSearch": "搜索:",
"sUrl": "",
"sEmptyTable": "表中數(shù)據(jù)為空",
"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
});
});
/**
* 表格加載渲染完畢后執(zhí)行的方法
* @param data
*/
function initComplete(data){
var dataPlugin =
'<div id="reportrange" class="pull-left dateRange" style="width:400px;margin-left: 10px"> '+
'日期:<i class="glyphicon glyphicon-calendar fa fa-calendar"></i> '+
'<span id="searchDateRange"></span> '+
'<b class="caret"></b></div> ';
$('#mytoolbox').append(dataPlugin);
//時間插件
$('#reportrange span').html(moment().subtract('hours', 1).format('YYYY-MM-DD HH:mm:ss') + ' - ' + moment().format('YYYY-MM-DD HH: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 : [ 'btn btn-default' ],
applyClass : 'btn-small btn-primary blue',
cancelClass : 'btn-small',
format : 'YYYY-MM-DD HH:mm:ss', //控件中from和to 顯示的日期格式
separator : ' to ',
locale : {
applyLabel : '確定',
cancelLabel : '取消',
fromLabel : '起始時間',
toLabel : '結(jié)束時間',
customRangeLabel : '自定義',
daysOfWeek : [ '日', '一', '二', '三', '四', '五', '六' ],
monthNames : [ '一月', '二月', '三月', '四月', '五月', '六月',
'七月', '八月', '九月', '十月', '十一月', '十二月' ],
firstDay : 1
}
}, function(start, end, label) {//格式化日期顯示框
$('#reportrange span').html(start.format('YYYY-MM-DD HH:mm:ss') + ' - ' + end.format('YYYY-MM-DD HH:mm:ss'));
});
//設(shè)置日期菜單被選項 --開始--
var dateOption ;
if("${riqi}"=='day') {
dateOption = "今日";
}else if("${riqi}"=='yday') {
dateOption = "昨日";
}else if("${riqi}"=='week'){
dateOption ="最近7日";
}else if("${riqi}"=='month'){
dateOption ="最近30日";
}else if("${riqi}"=='year'){
dateOption ="最近一年";
}else{
dateOption = "自定義";
}
$(".daterangepicker").find("li").each(function (){
if($(this).hasClass("active")){
$(this).removeClass("active");
}
if(dateOption==$(this).html()){
$(this).addClass("active");
}
});
//設(shè)置日期菜單被選項 --結(jié)束--
//選擇時間后觸發(fā)重新加載的方法
$("#reportrange").on('apply.daterangepicker',function(){
//當選擇時間后,出發(fā)dt的重新加載數(shù)據(jù)的方法
table.ajax.reload();
//獲取dt請求參數(shù)
var args = table.ajax.params();
console.log("額外傳到后臺的參數(shù)值extra_search為:"+args.extra_search);
});
function getParam(url) {
var data = decodeURI(url).split("?")[1];
var param = {};
var strs = data.split("&");
for(var i = 0; i<strs.length; i++){
param[strs[i].split("=")[0]] = strs[i].split("=")[1];
}
return param;
}
}
幸福小彩蛋:
在網(wǎng)上搜索dateranggepicker的資料時,會找到一個比較官方的網(wǎng)站:http://www.daterangepicker.com/,api全面,但是實際的操作習(xí)慣并不便利;所以我更建議daterangepicker-bs3。
如果大家還想深入學(xué)習(xí),可以點擊這里進行學(xué)習(xí),再為大家附兩個精彩的專題:Bootstrap學(xué)習(xí)教程 Bootstrap實戰(zhàn)教程
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- angularjs封裝bootstrap時間插件datetimepicker
- bootstrap datetimepicker日期插件超詳細使用方法介紹
- Bootstrap3 datetimepicker控件使用實例
- bootstrap datetimepicker日期插件使用方法
- bootstrap-datetimepicker實現(xiàn)只顯示到日期的方法
- Bootstrap 設(shè)置datetimepicker在屏幕上面彈出設(shè)置方法
- bootstrap datetimepicker實現(xiàn)秒鐘選擇下拉框
- vue2.0 與 bootstrap datetimepicker的結(jié)合使用實例
- 基于bootstrap-datetimepicker.js不支持IE8的快速解決方法
- bootstrap datetimepicker控件位置異常的解決方法
相關(guān)文章
javascript 中的console.log和彈出窗口alert
這篇文章主要介紹了javascript 中的console.log和彈出窗口alert 的相關(guān)資料,非常不錯,具有參考借鑒價值,感興趣的朋友參考下吧2016-08-08
uniapp-路由uni-simple-router安裝配置教程
專為uniapp打造的路由器,和uniapp深度集成,uniapp用到了很多vue的api,但在路由管理的功能相對于vue-router還是比較欠缺的,比如全局導(dǎo)航守衛(wèi),本文給大家講解uniapp-路由uni-simple-router相關(guān)知識,感興趣的朋友跟隨小編一起看看吧2022-11-11
調(diào)用innerHTML之后onclick失效問題的解決方法
調(diào)用innerHTML之后,onclick失效了,這也是在意料之中的,因為innerHTML是以文本形式插入的button,所以無法識別onclick事件2014-01-01
JavaScript常見錯誤:“無法讀取未定義的屬性”的原因及解決方案
本文將深入探討“無法讀取未定義的屬性”這一常見JavaScript錯誤,分析其成因,提供詳細的解決方案和最佳實踐,幫助開發(fā)者有效地預(yù)防和修復(fù)此類問題,感興趣的小伙伴跟著小編一起來看看吧2024-12-12
JavaScript實現(xiàn)點擊單選按鈕改變輸入框中文本域內(nèi)容的方法
這篇文章主要介紹了JavaScript實現(xiàn)點擊單選按鈕改變輸入框中文本域內(nèi)容的方法,涉及javascript單選按鈕控制頁面元素樣式的相關(guān)技巧,非常簡單實用,需要的朋友可以參考下2015-08-08

