Thinkphp5.1 + layui时间范围设置方法

 5530

最近在制作一个项目时遇到一个问题,就是开始时间和结束时间是相关联的,结束时间的选择范围是最小为开始时间,最大为开始时间90天后的时间,我这边用的是layui的插件获取的日期,里面有两个参数min和max分别可以设置日期范围;


其代码如下所示:

  1. layui.use('laydate', function(){
  2.     var laydate = layui.laydate;
  3.     //限定可选日期
  4.     var ins22 = laydate.render({
  5.         elem: '#test-limit1'
  6.         ,min: '2016-10-14'
  7.         ,max: '2080-10-14'
  8.     });
  9. });

但是怎么获取max和min的值时,我遇到了难点,后面经过反复研究Layui官方文档和反复的尝试,终于解决了这一问题,分享给大家:


a.定义变量当前时间、最小时间、最大时间

  1. var now = new Date();
  2. var min = now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + (now.getDate() + 1);
  3. var max = now.getFullYear() + "-" + (now.getMonth() + 2) + "-" + (now.getDate() + 2);


b.根据当前选择的时间重新给max和min赋值

要获取maxmin的值,首先要了解时间换算单位,大概思路为基本换算单位以小时为准,1小时为3600秒,因为laui中的时间戳是以毫秒为计算单位,所以需要再3600的基础上再乘以1000,一天为24小时,总共90天所以是90*24*3600*1000.

在选择了开始时间后done: function (value, date) 中value的值为当前选择的时间,将该值转化为时间戳为:var date1 = new Date(value).getTime();

90天后的时间戳为:var date2 = date1 + 90 * 24 * 3600 * 1000;

再将获取的时间转化为年月日:

  1. var date5 = {
  2.     'date': date3.getDate(),
  3.     'month': date3.getMonth() + 1,
  4.     'year': date3.getFullYear()
  5. };

将获取到的值赋值给结束时间的最小值和最大值:

  1. end.config.max = date5;
  2. end.config.max.month = date5.month - 1;
  3. end.config.min = date;
  4. end.config.min.month = date.month - 1;

所以完整的代码为:

  1. var start = laydate.render({
  2.     elem: '#bx_start',
  3.     type: 'date',
  4.     max: max,
  5.     min: min,
  6.     showBottom: false,
  7.     btns: ['clear', 'confirm'],
  8.     done: function (value, date) {
  9.         var date1 = new Date(value).getTime();//将当前选择的时间转化为时间戳
  10.         var date2 = date1 + 90 * 24 * 3600 * 1000;//获取90天后的时间
  11.         var date3 = new Date(date2);
  12.         var date5 = {
  13.             'date': date3.getDate(),
  14.             'month': date3.getMonth() + 1,
  15.             'year': date3.getFullYear()
  16.         };
  17.         end.config.max = date5;
  18.         end.config.max.month = date5.month - 1;
  19.         end.config.min = date;
  20.         end.config.min.month = date.month - 1;
  21.     }
  22. });


c.将获取的min和max传给结束时间

  1. var end = laydate.render({
  2.     elem: '#bx_end',
  3.     type: 'date',
  4.     max: max,
  5.     min: min,
  6.     showBottom: false,
  7.     done: function (value, date) {
  8.         if ($.trim(value) == '') {
  9.             var curDate = new Date();
  10.             date = {
  11.                 'date': curDate.getDate(),
  12.                 'month': curDate.getMonth() + 1,
  13.                 'year': curDate.getFullYear()
  14.             };
  15.         }
  16.         start.config.max = date;
  17.         start.config.max.month = date.month - 1;
  18.     }
  19. });


以下为完整代码

  1. <script>
  2.     layui.use(['form','layedit', 'laydate','layer','element'], function() {
  3.         $ = layui.jquery;
  4.         layer = layui.layer;
  5.         var form = layui.form;
  6.         layedit = layui.layedit;
  7.         laydate = layui.laydate;
  8. //定义变量当前时间、最小时间、最大时间
  9.         var now = new Date();
  10.         var min = now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + (now.getDate() + 1);
  11.         var max = now.getFullYear() + "-" + (now.getMonth() + 2) + "-" + (now.getDate() + 2);
  12.         var start = laydate.render({
  13.             elem: '#bx_start',
  14.             type: 'date',
  15.             max: max,
  16.             min: min,
  17.             showBottom: false,
  18.             btns: ['clear', 'confirm'],
  19.             done: function (value, date) {
  20.                 var date1 = new Date(value).getTime();//将当前选择的时间转化为时间戳
  21.                 var date2 = date1 + 90 * 24 * 3600 * 1000;//获取90天后的
  22.                 var date3 = new Date(date2);
  23.  
  24.                 var date5 = {
  25.                     'date': date3.getDate(),
  26.                     'month': date3.getMonth() + 1,
  27.                     'year': date3.getFullYear()
  28.                 };
  29.                 end.config.max = date5;
  30.                 end.config.max.month = date5.month - 1;
  31.                 end.config.min = date;
  32.                 end.config.min.month = date.month - 1;
  33.             }
  34.         });
  35.         var end = laydate.render({
  36.             elem: '#bx_end',
  37.             type: 'date',
  38.             max: max,
  39.             min: min,
  40.             showBottom: false,
  41.             done: function (value, date) {
  42.                 if ($.trim(value) == '') {
  43.                     var curDate = new Date();
  44.                     date = {
  45.                         'date': curDate.getDate(),
  46.                         'month': curDate.getMonth() + 1,
  47.                         'year': curDate.getFullYear()
  48.                     };
  49.                 }
  50.                 start.config.max = date;
  51.                 start.config.max.month = date.month - 1;
  52.             }
  53.         });
  54.     });
  55. </script>



本文网址:https://www.zztuku.com/detail-9064.html
站长图库 - Thinkphp5.1 + layui时间范围设置方法
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐