场景
日期的选择,在控台之中非常的常见。
Bootstrap DateTimePicker 空间是一款非常好用强大的日期控件。
快速开始
依赖引入
<!--引入 css --><link href="../../assets/common/commonCss.css" rel="stylesheet" />
<link href="../../assets/plugins/bootstrap-datepicker/css/bootstrap-datepicker.css" rel="stylesheet" />
<link href="../../assets/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.css" rel="stylesheet" /><!-- 引入js-->
<script src="../../assets/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
<script src="../../assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.js"></script>
<script src="../../assets/plugins/bootstrap-daterangepicker/moment.js"></script>
<script src="../../assets/plugins/bootstrap-eonasdan-datetimepicker/build/js/bootstrap-datetimepicker.min.js"></script>
页面使用
<div class="form-group">
<label>日期</label>
<input type="text" id="date" class="form-control" placeholder="日期" >
</div>
- jQuery 初始化
$('#date').datepicker({
format: 'yyyy-mm-dd',
autoclose: true
});
format 是显示的格式,autoclose 为选中后自动关闭悬浮框。
效果
这里是一个最基本的日期效果
格式为:yyyy-MM-dd
常用点
时间判断
一般我们会限制时间范围不超过一个月:
/**
* 日期校验
*
* 当一个日期不存在时,直接不做校验。
* @param beginDate 开始日期
* @param endDate 结束日期
* @return {boolean} 是否通过
*/
function validateDate(beginDate, endDate) {
if (beginDate == null || beginDate.length === 0) {
return true;
}
if (endDate == null || endDate.length === 0) {
return true;
}
var beginDateTime = new Date(beginDate.replace(/\-/g, "\/"));
var endDateTime = new Date(endDate.replace(/\-/g, "\/"));
if (beginDateTime > endDateTime) {
alert("开始日期不能大于结束日期!");
return false;
}
var day31 = 30 * 24 * 60 * 60 * 1000;
if ((endDateTime.getTime() - beginDateTime.getTime()) > day31) {//1~31 其实是31天,所有日期的区间30天就相当于间隔31天
alert("日期间隔不能超过31天!");
return false;
}
return true;
}
如何禁用用户手动输入
页面最佳实践:能不让用户手动输入的地方,就不要让用户手动输入。
因为自主性输入会带来很多问题,比如处理复杂,甚至有恶意攻击的可能性。
禁用:需要禁用用户手动输入,也要禁用复制等操作。
最简单的方式,直接将 input 设置为只读(或者 disabled):
<input type="text" class="form-control" id="date" readonly="readonly"/></div>
设置值后,时间控件依然可以正常使用,不过用户无法手动输入。
如何显示年月
需求:我们只希望显示年月,应该怎么办?
- html
<input type="text" class="form-control" id="month"/></div>
- js
$("#month").datepicker({
startView: 'years', //起始选择范围
maxViewMode:'years', //最大选择范围
minViewMode:'months', //最小选择范围
todayHighlight : true,// 当前时间高亮显示
autoclose : 'true',// 选择时间后弹框自动消失
format : 'yyyy-mm',// 时间格式
language : 'zh-CN',// 汉化
});
- 效果
首先选择年,然后选择月份。