I recently encountered a problem when making a project, that is, the start time and end time are related. The selection range of the end time is the minimum start time and the maximum time 90 days after the start time. What I use here It is the date obtained by the layui plug-in. There are two parameters min and max that can set the date range respectively;
The code is as follows:
layui.use('laydate', function(){ var laydate = layui.laydate; //限定可选日期 var ins22 = laydate.render({ elem: '#test-limit1' ,min: '2016-10-14' ,max: '2080-10-14' }); });
But how to get max and min When the value of , I encountered a difficulty. After repeated research on Layui official documents and repeated attempts, I finally solved this problem and share it with you:
a. Define variables current time and minimum time , Maximum time
var now = new Date(); var min = now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + (now.getDate() + 1); var max = now.getFullYear() + "-" + (now.getMonth() + 2) + "-" + (now.getDate() + 2);
b. Reassign max and min according to the currently selected time
To obtainmax
and min
, you must first understand the time conversion unit. The general idea is that the basic conversion unit is based on hours, and 1 hour is 3600 seconds. Because the timestamp in laui is calculated in milliseconds, it needs Then multiply 3600 by 1000. One day is 24 hours, and the total is 90 days, so it is 90*24*3600*1000
.
After selecting the start timedone : function (value, date)
The value of value is the currently selected time. Convert this value into a timestamp: var date1 = new Date(value).getTime();
The timestamp 90 days later is: var date2 = date1 90 * 24 * 3600 * 1000;
Then convert the obtained time into year, month and day:
var date5 = { 'date': date3.getDate(), 'month': date3.getMonth() + 1, 'year': date3.getFullYear() };
Assign the obtained values to the minimum and maximum values of the end time:
end.config.max = date5; end.config.max.month = date5.month - 1; end.config.min = date; end.config.min.month = date.month - 1;
So the complete code is:
var start = laydate.render({ elem: '#bx_start', type: 'date', max: max, min: min, showBottom: false, btns: ['clear', 'confirm'], done: function (value, date) { var date1 = new Date(value).getTime();//将当前选择的时间转化为时间戳 var date2 = date1 + 90 * 24 * 3600 * 1000;//获取90天后的时间 var date3 = new Date(date2); var date5 = { 'date': date3.getDate(), 'month': date3.getMonth() + 1, 'year': date3.getFullYear() }; end.config.max = date5; end.config.max.month = date5.month - 1; end.config.min = date; end.config.min.month = date.month - 1; } });
c. Will obtain the min and max Pass the end time
var end = laydate.render({ elem: '#bx_end', type: 'date', max: max, min: min, showBottom: false, done: function (value, date) { if ($.trim(value) == '') { var curDate = new Date(); date = { 'date': curDate.getDate(), 'month': curDate.getMonth() + 1, 'year': curDate.getFullYear() }; } start.config.max = date; start.config.max.month = date.month - 1; } });
The following is the complete code
<script> layui.use(['form','layedit', 'laydate','layer','element'], function() { $ = layui.jquery; layer = layui.layer; var form = layui.form; layedit = layui.layedit; laydate = layui.laydate; //定义变量当前时间、最小时间、最大时间 var now = new Date(); var min = now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + (now.getDate() + 1); var max = now.getFullYear() + "-" + (now.getMonth() + 2) + "-" + (now.getDate() + 2); var start = laydate.render({ elem: '#bx_start', type: 'date', max: max, min: min, showBottom: false, btns: ['clear', 'confirm'], done: function (value, date) { var date1 = new Date(value).getTime();//将当前选择的时间转化为时间戳 var date2 = date1 + 90 * 24 * 3600 * 1000;//获取90天后的 var date3 = new Date(date2); var date5 = { &#39;date&#39;: date3.getDate(), &#39;month&#39;: date3.getMonth() + 1, &#39;year&#39;: date3.getFullYear() }; end.config.max = date5; end.config.max.month = date5.month - 1; end.config.min = date; end.config.min.month = date.month - 1; } }); var end = laydate.render({ elem: &#39;#bx_end&#39;, type: &#39;date&#39;, max: max, min: min, showBottom: false, done: function (value, date) { if ($.trim(value) == &#39;&#39;) { var curDate = new Date(); date = { &#39;date&#39;: curDate.getDate(), &#39;month&#39;: curDate.getMonth() + 1, &#39;year&#39;: curDate.getFullYear() }; } start.config.max = date; start.config.max.month = date.month - 1; } }); }); </script>
Recommended related articles: "TP5.1 Add watermark function to pictures 》《TP5.1 layui implements column number calling》《The latest 10 thinkphp video tutorials》
The above is the detailed content of TP5.1 + layui time range setting method. For more information, please follow other related articles on the PHP Chinese website!