layui 动态添加多个laydate时间插件 并自动计算开始时间与结束时间的差值

333 阅读2分钟

点击 再添加一期 按钮,就添加整个期数的内容 包括培训时间等。 培训费用 住宿费 餐费 其他,填写完,也是自动算出总和。

var num = 1;
    
    // 自动计算总钱数
    $(".classCount").on("input propertychange", "input[name='trainCost'],input[name='hotelCost'],input[name='mealsCost'],input[name='otherCost']",function() {
      // alert(222)
      var peixun = $(this).parents('.classCountPart').find("input[name='trainCost']").val();
      var zhusu = $(this).parents('.classCountPart').find("input[name='hotelCost']").val();
      var canfei = $(this).parents('.classCountPart').find("input[name='mealsCost']").val();
      var other = $(this).parents('.classCountPart').find("input[name='otherCost']").val();
      console.log(peixun,zhusu,canfei,other)
      var totalValue = Number(peixun) +  Number(zhusu) +  Number(canfei) + Number(other)
      $(this).parents('.classCountPart').find("input[name='totalCost']").val(totalValue);
    });
    //添加新一期
    $("#addCountClass").on('click',function(){
      var othis = $(this), method = othis.data('method');
      active[method].call(this, othis);
    })
    //删除期数
   $(".classCount").on('click','#delqishu', function(){
      var othis = $(this), method = othis.data('method');
      active[method].call(this, othis);
    })


var active = {

      // 删除一期
      delqishu:function(othis){
        othis.parent().parent().parent().remove().off("click", ".classCountPart");
        num--;
      },
      // 再添加一期
      addCountClass: function(othis){
        num++;
        var addqishu =
        '\t<div class="classCountPart">\n' +
        '\t<div class="qishu layui-form-item clearFloat">\n' +
        // '\t<div class="layui-inline floatleft">第'+ num +'期</div>\n' +
        '\t<input class="layui-inline floatleft layui-input" id="qishuInput" lay-filter="periodName" value="第'+ num +'期">\n' +
        '\t<div class="layui-inline floatright">\n' +
        '\t<button type="button" class="layui-btn layui-btn-xs layui-btn-normal" style="margin-top:8px;" data-method="delqishu" id="delqishu"><i class="layui-icon layui-icon-subtraction"></i></button>\n' +
        '\t</div> \n' +
        '\t</div>\n' +
        '\t<div class="layui-form-item">\n' +
        '\t<div class="layui-inline">\n' +
        '\t<label class="layui-form-label"><span class="mustItem">*</span> 培训人数:</label>\n' +
        '\t<div class="layui-input-inline" style="width: 256px;">\n' +
        '\t<input type="text" name="trainPsnNum" id="trainPsnNum" lay-filter="trainPsnNum" class="layui-input" lay-verify="required">\n' +
        '\t</div>\n' +
        '\t<div class="layui-form-mid">人</div>\n' +
        '\t</div>\n' +
        '\t<div class="layui-inline classTime">\n' +
        '\t <label class="layui-form-label"> <span class="mustItem">*</span> 培训时间:</label>\n' +
        '\t<div class="layui-input-inline trainStarttimeCon" style="width:125px;">\n' +
        '\t<input type="text" name="trainStarttime" id="trainStarttime'+num+'" lay-filter="trainStarttime" class="layui-input trainStarttime" lay-verify="required" placeholder="yy-mm-dd" autocomplete="off" >\n' +
        '\t</div>\n' +
        '\t<div class="layui-input-inline" style="width:11px;line-height: 36px;">-</div>\n' +
        '\t<div class="layui-input-inline trainEndtimeCon" style="width:125px;">\n' +
        '\t<input type="text" name="trainEndtime" id="trainEndtime'+num+'" lay-filter="trainEndtime" class="layui-input trainEndtime" lay-verify="required"  placeholder="yy-mm-dd" autocomplete="off" >\n' +
        '\t</div>\n' +
        '\t</div>\n' +
        // '\t共<span class="daysNum"></span>天 \n' +
        '\t共<input class="daysNum daysNum'+num+' layui-input" lay-filter="trainDays" id="trainDays">天 \n' +
        // '\t<span class="countDays" data-method="countDays" id="countDays">计算</span> \n' +
        '\t</div>\n' +
        '\t<div class="layui-form-item">\n' +
        '\t<div class="layui-inline peixun">\n' +
        '\t<label class="layui-form-label">培训费用:</label>\n' +
        '\t<div class="layui-input-inline" style="width: 100px;">\n' +
        '\t<input type="text" name="trainCost" id="trainCost" lay-filter="trainCost" class="layui-input trainCost" >\n' +
        '\t</div>\n' +
        '\t</div>\n' +
        '\t<div class="layui-inline zhusu">\n' +
        '\t<label class="layui-form-label">住宿费:</label>\n' +
        '\t<div class="layui-input-inline" style="width: 100px;">\n' +
        '\t<input type="text" name="hotelCost" id="hotelCost" lay-filter="hotelCost" class="layui-input hotelCost" >\n' +
        '\t</div>\n' +
        '\t</div>\n' +
        '\t<div class="layui-inline canfei">\n' +
        '\t<label class="layui-form-label">餐费:</label>\n' +
        '\t<div class="layui-input-inline" style="width: 100px;">\n' +
        '\t<input type="text" name="mealsCost" id="mealsCost" lay-filter="mealsCost" class="layui-input mealsCost" >\n' +
        '\t</div>\n' +
        '\t</div>\n' +
        '\t<div class="layui-inline other">\n' +
        '\t<label class="layui-form-label">其他:</label>\n' +
        '\t<div class="layui-input-inline" style="width: 100px;">\n' +
        '\t<input type="text" name="otherCost" id="otherCost" lay-filter="otherCost" class="layui-input otherCost" >\n' +
        '\t</div>\n' +
        '\t</div>\n' +
        // '\t共<span class="moneyNum"></span>元 <span class="countMoney" id="countMoney" data-method="countMoney">计算</span> \n' +
        '\t共<input class="moneyNum layui-input" lay-filter="totalCost" id="totalCost" name="totalCost" >元 \n' +
        // '\t<span class="countMoney" id="countMoney" data-method="countMoney">计算</span> \n' +
        '\t</div>\n' +
        '\t<div class="layui-form-item">\n' +
        '\t<div class="layui-inline">\n' +
        '\t<label class="layui-form-label"> <span class="mustItem">*</span> 主办单位:</label>\n' +
        '\t<div class="layui-input-inline planpartInput">\n' +
        '\t<input type="text" name="sponsorUnitName" lay-verify="required" id="sponsorUnitName'+num+'" lay-filter="sponsorUnitName" class="layui-input sponsorUnitName" data-type="sponsorUnitName'+num+'">\n' +
        '\t<input type="hidden" name="sponsorUnit" id="sponsorUnit'+num+'" lay-filter="sponsorUnit" class="layui-input sponsorUnit" data-type="sponsorUnit'+num+'">\n' +
        '\t<button class="layui-btn layui-btn-normal planpartBtn" data-type="sponsorUnitName'+num+'">选择</button>\n' +
        '\t<button class="layui-btn layui-btn-xs layui-btn-radius layui-btn-normal clearplanpartBtn sponsorUnitName'+num+' layui-hide" data-type="sponsorUnitName'+num+'" > <i class="layui-icon layui-icon-close"></i> </button>\n' +
        '\t</div>\n' +
        '\t</div>\n' +

        '\t<div class="layui-inline">\n' +
        '\t<label class="layui-form-label">承办单位:</label>\n' +
        '\t<div class="layui-input-inline planpartInput">\n' +
        '\t<input type="text" name="undertakingUnitName" id="undertakingUnitName'+num+'" lay-filter="undertakingUnitName" class="layui-input undertakingUnitName" data-type="undertakingUnitName'+num+'">\n' +
        '\t<input type="hidden" name="undertakingUnit" id="undertakingUnit'+num+'" lay-filter="undertakingUnit" class="layui-input undertakingUnit" data-type="undertakingUnit'+num+'">\n' +
        '\t<button class="layui-btn layui-btn-normal planpartBtn" data-type="undertakingUnitName'+num+'">选择</button>\n' +
        '\t<button class="layui-btn layui-btn-xs layui-btn-radius layui-btn-normal clearplanpartBtn undertakingUnitName'+num+' layui-hide" data-type="undertakingUnitName'+num+'" ><i class="layui-icon layui-icon-close"></i></button>\n' +
        '\t</div>\n' +
        '\t</div>\n' +

        '\t<div class="layui-inline">\n' +
        '\t<label class="layui-form-label"> 协办单位:</label>\n' +
        '\t<div class="layui-input-inline planpartInput">\n' +
        '\t<input type="text" name="coRganizerName" id="coRganizerName'+num+'" lay-filter="coRganizerName" class="layui-input coRganizerName" data-type="coRganizerName'+num+'">\n' +
        '\t<input type="hidden" name="coRganizer" id="coRganizer'+num+'" lay-filter="coRganizerCode" class="layui-input coRganizer" data-type="coRganizer'+num+'">\n' +
        '\t<button class="layui-btn layui-btn-normal planpartBtn" data-type="coRganizerName'+num+'">选择</button>\n' +
        '\t<button class="layui-btn layui-btn-xs layui-btn-radius layui-btn-normal clearplanpartBtn coRganizerName'+num+' layui-hide" data-type="coRganizerName'+num+'" > <i class="layui-icon layui-icon-close"></i> </button>\n' +
        '\t</div>\n' +
        '\t</div>\n' +

        '\t<div class="layui-form-item">\n' +
        '\t<label class="layui-form-label"> 联合培训单位:</label>\n' +
        '\t<div class="layui-input-block jointPub">\n' +
        '\t<input type="text" name="jointUnitName" id="jointUnitName'+num+'" lay-filter="jointUnitName" class="layui-input jointUnitName" data-type="jointUnitName'+num+'" title="" style="padding-right: 165px;">\n' +
        '\t<input type="hidden" name="jointUnit" id="jointUnit'+num+'" lay-filter="jointUnit" class="layui-input jointUnit" data-type="jointUnit'+num+'">\n' +
        '\t<button class="layui-btn layui-btn-normal jointPubBtn" data-type="jointUnitName'+num+'">选择</button>\n' +
        '\t<button class="layui-btn layui-btn-normal clearjointPubBtn" data-type="jointUnitName'+num+'" >清空重选</button>\n' +
        '\t</div>\n' +
        '\t</div>\n' +
        '\t</div>\n' +
        '\t</div>\n'
        $('.classCount').append(addqishu);
        form.render();

        var trainstartDate2 = laydate.render({
          elem:'#trainStarttime'+num
          ,type:'date'
          ,format: 'yyyy-MM-dd'
          ,showBottom: false
          ,trigger: 'click'
          ,min:'nowTime'//默认最大值为当前日期
          ,done:function(value,date){
              trainendDate2.config.min= {
                year:date.year,
                month:date.month-1,//关键
                date:date.date
              };
              //选完自动 计算时间
              if($('#trainEndtime'+num).val()){
                $('.daysNum'+num).val(getDays(value,trainendDate2.config.elem[0].value))
              }  
          }
        })
        var trainendDate2 = laydate.render({
         elem: "#trainEndtime"+num
         ,type:'date'
         ,format: 'yyyy-MM-dd'
         ,showBottom: false
         ,trigger: 'click'
         ,min:'nowTime'
         ,done:function(value,date){
             trainstartDate2.config.max={
                 year:date.year,
                 month:date.month-1,//关键
                 date:date.date
             }
            //选完自动 计算时间
            $('.daysNum'+num).val(getDays(trainstartDate2.config.elem[0].value, value))
         }
       })

      }

    }

 //计算天数
  function getDays(startDate,endDate){
    //console.log(startDate,endDate)
    var date1Str = startDate.split("-");//将日期字符串分隔为数组,数组元素分别为年、月、日
    //根据年、月、日的值创建Date对象
    var date1Obj = new Date(date1Str[0],(date1Str[1]-1),date1Str[2]);
    var date2Str = endDate.split("-");
    var date2Obj = new Date(date2Str[0],(date2Str[1]-1),date2Str[2]);
    var t1 = date1Obj.getTime();//返回从1970-1-1开始计算到Date对象中的时间之间的毫秒数
    var t2 = date2Obj.getTime();//返回从1970-1-1开始计算到Date对象中的时间之间的毫秒数
    var datetime=1000*60*60*24; //一天时间的毫秒值
    var minusDays = Math.floor(((t2-t1)/datetime));//计算出两个日期天数差
    var days = Math.abs(minusDays);//如果结果为负数,取绝对值
    return days+1;
  }