bootstrap-dateRangePicker基于BootStrap的日期时间处理(考试开始时间 结束时间)
2019-06-06 12:00
375 查看
最近在做一个考试系统,所以用到了考试开始时间和结束时间,百度了好多种,还是没搞出来,原谅我这个小菜鸡(哈哈),毕竟我是个后端,搞前端我还是很难受的,然后就各种尝试,抓破了头皮,终于写出来了,大佬勿喷阿!好了,废话不多说,上干货~~
效果图:
注:假如今天是2019/6/6,设置开始日期是从今天开始算起。如果开始时间设置为6月8号,则以前的 都不能选中。
1.引入一些css
<link href="plugins/bootstrap-table/dist/bootstrap-table.min.css" rel="stylesheet" type="text/css"/> <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css"/> <link href="/labhtml/css/validate/bootstrapValidator.css" rel="stylesheet"> <link href="/hrbust_lab_platform/css/datetimepicker/bootstrap-datetimepicker.css" rel="stylesheet" />
2.引入js
<script src="js/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> <script type="text/javascript" src="js/validate/bootstrapValidator.js"></script> <script src="plugins/bootstrap-table/dist/bootstrap-table.min.js"></script> <script src="plugins/bootstrap-table/dist/locale/bootstrap-table-zh-CN.min.js"></script> <script src="plugins/layer/layer.js"></script>
3.代码部分
<form id="edit-form" role="form" class="form-horizontal" action=" " > <!--考试开始时间--> <div class="form-group"> <label for="lm" class="col-sm-2 control-label"><span class="text-danger">*</span> 考试开始时间</label> <div class="col-sm-3" style="display: inline-block"> <input type="text" class="form-control ksTime" id="examStartTime" name="examStartTime" required> </div> </div> <!--考试结束时间--> <div class="form-group"> <label for="zuozhe" class="col-sm-2 control-label"><span class="text-danger">*</span> 考试结束时间</label> <div class="col-sm-3" style="display: inline-block"> <input type="text" class="form-control ksTime" id="examEndTime" name="examEndTime" required> </div> </form> $('#edit-form').bootstrapValidator({ fields:{ examEndTime:{ message: '输入的值无效', validators:{ notEmpty: { message: '选择时间' }, callback: { message: '不在有效时间间隔内', callback: function(value, validator) { var orderMinTime = $("#orderMinTime").val() * 3600 * 1000; var orderMaxTime = $("#orderMaxTime").val() * 24 * 3600 * 1000; var examEndTime = value; var examStartTime = $("#starTime").val(); var flag = true if(examStartTime != null && examStartTime != '' && examStartTime != undefined) { var endt = new Date(examEndTime.replace(/-/g, "/")).getTime(); var strt = new Date(examStartTime.replace(/-/g, "/")).getTime(); if(endt - strt < orderMinTime) { flag = false; } else if(endt - strt > orderMaxTime) { flag = false; } } $.ajax({ type: "get", url: " 查所有的就ok. ", async: true, success: function(data) { var endt = new Date(examEndTime.replace(/-/g, "/")).getTime(); if(data.status == 200) { $.each(data.result, function(i, v) { if(endt >= v.examStartTime && endt <= v.examEndTime) { setTimeout(function(){ $('#examEndTime').val(''); }, 30 ) layer.msg('所选时段重复',function() {flag = false;}); } }); } } }); return flag; } } } }, examStartTime: { message: '输入的值无效', validators: { notEmpty: { message: '选择时间' }, callback: { message: '不在有效时间间隔内', callback: function(value, validator) { var orderMinTime = $("#orderMinTime").val() * 3600 * 1000; var orderMaxTime = $("#orderMaxTime").val() * 24 * 3600 * 1000; var endTime = $("#examEndTime").val(); var starTime = $("#examStartTime").val(); var flag = true if(endTime != null && endTime != '' && endTime != undefined) { var endt = new Date(endTime.replace(/-/g, "/")).getTime(); var strt = new Date(starTime.replace(/-/g, "/")).getTime(); if(endt - strt < orderMinTime) { flag = false; } else if(endt - strt > orderMaxTime) { flag = false; } $.ajax({ type: "get", url: " 同上面的url.", async: true, success: function(data) { var strt = new Date(starTime.replace(/-/g, "/")).getTime(); if(data.status == 200) { $.each(data.result, function(i, v) { if(strt >= v.examStartTime && strt <= v.examEndTime){ setTimeout(function(){ $('#examStartTime').val(''); }, 30 ) layer.msg('所选时段重复',function() {flag = false;}); } }); } } }); } return flag; } } } }, } }) }); function timeRangeValidate(starTimeId, endTimeId, formId, format) { $('#' + starTimeId).datetimepicker({ startDate: new Date(), minView: 0, minuteStep: 5, format: format, //选择日期后,文本框显示的日期格式 language: 'zh', //汉化 autoclose: true //选择日期后自动关闭 }).on('changeDate', function(ev) { $("#" + endTimeId).datetimepicker('setStartDate', new Date(ev.date.valueOf())) var form = $("#" + formId).data("bootstrapValidator"); form.updateStatus(starTimeId, 'NOT_VALIDATED').validateField(starTimeId); }); $('#' + endTimeId).datetimepicker({ startDate: new Date(), minView: 0, minuteStep: 5, format: format, //选择日期后,文本框显示的日期格式 language: 'zh', //汉化 autoclose: true //选择日期后自动关闭 }).on('changeDate', function(ev) { $("#" + starTimeId).datetimepicker('setEndDate', new Date(ev.date.valueOf())) var form = $("#" + formId).data("bootstrapValidator"); form.updateStatus(endTimeId, 'NOT_VALIDATED').validateField(endTimeId); }); }
相关文章推荐
- bootstrap-datepicker限定可选时间范围 一、应用场景 实际应用中可能会根据日期字段查询某个日期范围内的数据,则需要对日期选择器可选时间进行限制, 如:开始时间不能大于结束时间,
- bootstrap-datepicker关于开始时间小于结束时间且都大于当前时间的控制
- 基于Silverlight DataGrid中无代码设置开始与结束日期DatePicker的实现方法
- 【jQuery日期处理】选择开始时间,自动结束时间
- 一款贴近用户体验的jQuery日期选择插件。这是一款双日历jQuery日期选择时间插件pickerDateRange。
- easyui日期处理(开始时间和结束时间)
- 日期时间范围选择插件:daterangepicker使用总结(必看篇)
- bootstrap-datetimepicker 开始时间与结束时间互相约束
- java方法,返回两个日期内的所有date集合,根据开始时间、结束时间得到两个时间段内所有的日期
- jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
- Silverlight DataGrid中无代码设置开始和结束日期的 DatePicker
- 修复bootstrap daterangepicker不能清空日期的问题
- 7DatePicker_限制开始日期和结束日期在同一个月
- vue elementui el-date-picker 结束时间大于开始时间
- JQuery 1.32 DatePicker 增强版解决结束日期小于开始日期的问题
- boostrap的日期选择:datetimepicker 做 开始时间与 结束时间的判断,开始时间小于结束时间
- datepicker,结束时间必须大于开始时间
- BootStrap dateRangePicker时间范围控件
- ReportStudio入门教程(八十八) - 设置日期控件(DatePrompt)的开始时间和结束时间