【问题标题】:Bootstrap datepicker - Pick 5 days without weekendsBootstrap datepicker - 选择没有周末的 5 天
【发布时间】:2016-07-27 10:40:07
【问题描述】:

您好,我想在没有周末的五天自动选择日期选择器。 如果用户选择例如 27.07.2016 作为开始日期,我想从中选择 5 天 28.07、29.07、01.08、02.08、03.08 如果可能的话,我想在输入 27.08.2016 - 03.08.2016 中显示

到目前为止,我做了这样的事情: Demo example http://jsfiddle.net/kuchar/hrzakorh/#&togetherjs=t3vznRU6eM

var date = new Date();
  var today = new Date(date.getFullYear(), date.getMonth(), date.getDate());
  var todaytime = new Date().toLocaleTimeString('pl-PL', {
    hour12: false,
    hour: "numeric",
    minute: "numeric"
  });
  if (todaytime <= '12:00:00'){
    $('#date-picker input').datepicker({
      language: "pl",
      multidateSeparator: " - ",
      maxViewMode: 0,
      multidate: true,
      daysOfWeekDisabled: "0,6",
      defaultDate: 1,
      startDate: '+1d',
    });
  }
  if (todaytime >= '12:00:00'){
    $('#date-picker input').datepicker({
      language: "pl",
      multidateSeparator: " - ",
      maxViewMode: 0,
      multidate: true,
      daysOfWeekDisabled: "0,6",
      defaultDate: 1,
      startDate: '+2d',
    });
  }

日历在我称为“Wybierz datę”的输入上。

【问题讨论】:

    标签: javascript jquery html twitter-bootstrap datepicker


    【解决方案1】:

    近似值应该是...

    function getDayAfterExcludingWeekEnds(dateParam,dayNum){
      var newDate = new Date( dateParam.getFullYear(), dateParam.getMonth(), dateParam.getDate() + dayNum);
      if (newDate.getDay() == 6){
        return getDayAfterExcludingWeekEnds( newDate, 2);
      }
      if (newDate.getDay == 0){
        return getDayAfterExcludingWeekEnds( newDate, 1);
      }
      return newDate;
    }
    $("#select").change(function() {
        var count = parseInt($(this).val().replace("ppl", ""));
        $("#npersons").html("");
        $(".dataTable").hide();
        for (var i = 0; i < count; i++) {
          var $row = $("#food").clone().prop("name", "foods" + i).show();
          $row.find("td").eq(0).html(i + 1);
          $("#persons #food").removeAttr('required');
          $("#npersons").append($row);
        }
        if (count > 0) {
          $(".dataTable").show();
        }
        });
    
      var date = new Date();
      var today = new Date(date.getFullYear(), date.getMonth(), date.getDate());
      var todaytime = new Date().toLocaleTimeString('pl-PL', {
        hour12: false,
        hour: "numeric",
        minute: "numeric"
      }),
      startDate = '+1d';
      if (todaytime > '12:00:00'){
        startDate = '+2d';
      }
      $('#date-picker input').datepicker({
        language: "pl",
        multidateSeparator: " - ",
        maxViewMode: 0,
        multidate: true,
        daysOfWeekDisabled: "0,6",
        defaultDate: 1,
        startDate: startDate 
      }).on('changeDate', function( event ) {
              if( event.dates.length > 1 && event.dates.length < 6){
                return;
              }
              var selectedDate = event.date,
              selectedDateAfterOne = getDayAfterExcludingWeekEnds( selectedDate, 1),
              selectedDateAfterTwo = getDayAfterExcludingWeekEnds( selectedDateAfterOne, 1),
              selectedDateAfterTree = getDayAfterExcludingWeekEnds( selectedDateAfterTwo, 1),
              selectedDateAfterFour = getDayAfterExcludingWeekEnds( selectedDateAfterTree, 1),
              dates = [selectedDate,selectedDateAfterOne,selectedDateAfterTwo,selectedDateAfterTree,selectedDateAfterFour];
              $('#date-picker input').datepicker('setDates',dates);
            });
    

    祝你好运

    【讨论】:

    • 是的,谢谢你,这几乎就是我想要的,我不想选择几周:(
    • 您能否举例说明“我不想要 SELECT 周”?
    • 现在使用您的代码,如果我从日历中选择 29.07,它会给我:29.07.2016 - 30.07.2016 - 31.07.2016 - 01.08.2016 - 02.08.2016 但我希望它跳过几周它应该看起来像这样 29.07.2016 - 01.08.2016 - 02.08.2016 - 03.08.2016 - 04.08.2016
    • 哦,现在是周末 ;-)
    • 是的,对不起我的英语,你知道如何让它工作吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多