最近プロジェクトを作成するときに、開始時刻と終了時刻が関連しているという問題が発生しました。終了時刻の選択範囲は、最小開始時刻と開始時刻から 90 日後の最大時刻です。ここで使用します これは、layui プラグインによって取得された日付です。日付範囲を設定できる 2 つのパラメーター min と max がそれぞれあります;
コードは次のとおりです:
layui.use('laydate', function(){ var laydate = layui.laydate; //限定可选日期 var ins22 = laydate.render({ elem: '#test-limit1' ,min: '2016-10-14' ,max: '2080-10-14' }); });
ただし、最大値と最小値を取得する方法 の値のとき、問題が発生しました。ラユイの公式文書を何度も調べ、何度も試みた結果、最終的にこの問題を解決したので、皆さんと共有します:
a変数の現在時刻と最小時刻、最大時刻を定義します
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. 現在選択されている時刻に従って最大値と最小値を再割り当てします
取得するにはmax
と min
については、まず時間の変換単位を理解する必要があります。一般的な考え方は、基本的な変換単位は時間に基づいており、1 時間は 3600 秒です。ラウイはミリ秒単位で計算されます。次に、3600 に 1000 を掛けます。1 日は 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;
次に、取得した時刻を年に変換します。月と日:
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;
したがって、完全なコードは次のとおりです:
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. 最小値と最大値を取得します 終了時刻を通過します
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; } });
以下は完全なコードです
<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>
おすすめ関連記事: "TP5.1 画像にウォーターマーク機能を追加します >>TP5.1 レイウイは列番号呼び出しを実装します>>最新の 10 の thinkphp ビデオ チュートリアル >>
以上がTP5.1+レイウイタイムレンジ設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。