一個頁面多個地方使用日期組件 - layui.laydate時,多次渲染閃退問題


開發頁面中有多個地方需要選擇日期,所以選擇了layui的 laydate控件,但是在點擊第二個“日期選擇框”時,生成的選擇框只是顯示一下就消失了,參考網上的資料,是由於我們點擊了“日期選擇框”后 ,laydate會給input框增加一個 lay-key=”1”,找到了如下的解決方法:通過類選擇“日期選擇框”,遍歷循環創建實例。

  1.  
    <!DOCTYPE html>
  2.  
    <html lang="en">
  3.  
    <head>
  4.  
    <meta charset="UTF-8">
  5.  
    <title>Title</title>
  6.  
    <script type="text/javascript" src="../public/3rdLibs/jquery/v3.2.1/jquery-3.2.1.min.js"></script>
  7.  
    <script type="text/javascript" src="../public/3rdLibs/laydate/v5.0.9/laydate/laydate.js"></script>
  8.  
    </head>
  9.  
    <body>
  10.  
    <div class="">
  11.  
    上課日期:
  12.  
    <input type="text" class="J-startTime" value="" placeholder="請選擇開始日期" readonly="readonly">
  13.  
    <span class="from-to">&nbsp-&nbsp</span>
  14.  
    <input type="text" class="J-endTime" value="" placeholder="請選擇結束日期" readonly="readonly">
  15.  
    </div>
  16.  
    <div class="">
  17.  
    考試日期:
  18.  
    <input type="text" class="J-startTime" value="" placeholder="請選擇開始日期" readonly="readonly">
  19.  
    <span class="from-to">&nbsp-&nbsp</span>
  20.  
    <input type="text" class="J-endTime" value="" placeholder="請選擇結束日期" readonly="readonly">
  21.  
    </div>
  22.  
    <script>
  23.  
    $(function () {
  24.  
    //點擊“開始日期”彈出日期選擇框,選擇日期后,結束日期默認等於開始日期,且結束日期最小值為對應的開始日期
  25.  
    //遍歷循環創建實例
  26.  
    var endDate=[];
  27.  
    $('.J-startTime').each(function(index){
  28.  
    var _this=this;
  29.  
    laydate.render({
  30.  
    elem: _this,
  31.  
    trigger:'click',
  32.  
    done: function(value, date){
  33.  
    $(_this).nextAll('.J-endTime').val(value);
  34.  
    endDate[index].config.min ={
  35.  
    year:date.year,
  36.  
    month:date.month-1, //關鍵
  37.  
    date: date.date,
  38.  
    };
  39.  
    }
  40.  
    });
  41.  
    });
  42.  
    $('.J-endTime').each(function (index) {
  43.  
    var _this=this;
  44.  
    endDate[index]=laydate.render({
  45.  
    elem:_this,
  46.  
    });
  47.  
    });
  48.  
    });
  49.  
    </script>
  50.  
    </body>
  51.  
    </html>

通過數組endDate存儲“開始日期”對應的“結束日期”,動態設置“結束日期”的最小值。

注意:

1、endDate[index].config.min是一個對象,必須分別設置:年、月、日;

2、date中的月從1開始,而endDate[index].config.min中的月從0開始,所以需在date.month-1基礎上賦值。

 

轉自於:https://www.codeleading.com/article/7346746014/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM