javascript - 如何格式化日期选择器

标签 javascript jquery datepicker

我创建了一个预订表格,并且正在使用 Pikaday datepicker plugin我的预订表格是针对酒店的,这就是为什么我有空闲的日子、保留的日子和可用的日子,我想给这些天一个 .class 来在日期选择器上为它们着色,我创建了图片展示我实际想要做的事情..我如何使用 arraylist 通过 jquery 来做到这一点?有什么想法吗?

例如,这些是我的空日期

enter image description here

这是我禁用的功能

   disableDayFn: function(theDate) {
        theDate = theDate.toISOString().split('T')[0];
        if (disallowedDates.indexOf(theDate) != -1) {
          console.log(theDate + ' - BLOCKED');
        } else {
          console.log(theDate);
        }

        return (disallowedDates.indexOf(theDate) != -1)
      }

但我也想在预订日执行此操作,我该怎么做?

$(document).ready(function() {

  var disallowedDates = [
    '2017-02-20', '207-02-10', '2017-02-15', '2017-02-09'
  ]
  var startDate,
    endDate,
    updateStartDate = function() {
      startPicker.setStartRange(startDate);
      endPicker.setStartRange(startDate);
      endPicker.setMinDate(startDate);
    },
    updateEndDate = function() {
      startPicker.setEndRange(endDate);
      startPicker.setMaxDate(endDate);
      endPicker.setEndRange(endDate);
    },
    startPicker = new Pikaday({
      field: document.getElementById('checkin'),
      format: "DD.MM.YY",
      firstDay: 1,
      disableDayFn: function(theDate) {
        theDate = theDate.toISOString().split('T')[0];
        if (disallowedDates.indexOf(theDate) != -1) {
          console.log(theDate + ' - BLOCKED');
        } else {
          console.log(theDate);
        }

        return (disallowedDates.indexOf(theDate) != -1)
      },
      onSelect: function() {
        startDate = this.getDate();
        updateStartDate();
        $('#checkout').trigger("click");
      }
    }),
    endPicker = new Pikaday({
      field: document.getElementById('checkout'),
      format: "DD.MM.YY",
      minDate: new Date(),
      maxDate: new Date(2020, 12, 31),
      onSelect: function() {
        endDate = this.getDate();
        updateEndDate();
      }
    }),
    _startDate = startPicker.getDate(),
    _endDate = endPicker.getDate();
  if (_startDate) {
    startDate = _startDate;
    updateStartDate();
  }
  if (_endDate) {
    endDate = _endDate;
    updateEndDate();
  }

});
body {
  padding: 30px;
}

input,
select {
  width: 100%;
  padding: 10px;
  border: 1px solid #ccc;
}
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.5.1/css/pikaday.min.css" />





</head>

<body>


  <div class="container">


    <div class="row">

      <div class="col-lg-3 col-md-3 col-sm-3">
        <input type="text" class="checkin" id="checkin" />
      </div>
      <div class="col-lg-3 col-md-3 col-sm-3">

        <input type="text" class="checkout" id="checkout" />
      </div>

    </div>


  </div>



  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.5.1/pikaday.min.js"></script>

  <script src="https://cdn.anitur.com.tr/example/flexdatalist/flexdatalist.js"></script>

</body>

</html>

最佳答案

我想我找到了解决您问题的方法。

我的方法是实现一个 onOpen 函数,该函数迭代您存储的日期数组,它可以是保留日、空日或 w/e,获取日期的年、月和日我可以创建一个选择器,仅选择您拥有的日期,并且只需 addClass() 即可添加您想要的任何类(class)。

这是代码:

var disableDays = [];
var picker;
$(document).ready(function () {
    picker = new Pikaday({
        field: $('#datepicker')[0],
        disableDayFn: function (date) {
            return disableDays.indexOf(date.toString()) != -1;
        },
        onSelect: function (date) {
            disableDays.push(date.toString());
        },
        onOpen: function () {
            $.each(disableDays, function (i, v) {
                var date = new Date(v);
                var yearSelector = '[data-pika-year="' + date.getFullYear() + '"]';
                var monthSelector = '[data-pika-month="' + date.getMonth() + '"]';
                var daySelector = '[data-pika-day="' + date.getDate() + '"]';
                $(yearSelector + monthSelector + daySelector).addClass('yellow');
            })
        }
    });
});

希望能帮到你。

关于javascript - 如何格式化日期选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42413218/

相关文章:

javascript - 删除悬停图像上的闪烁

jquery - 使用 AJAX 监视 SQL 数据库的更改

java - 如何从 DatePickerDialog 显示月份名称 - Android Studio

javascript递归字符串连接

javascript - JS - 如何从不同的文件 Hook 成功和错误回调

jquery - 如何将CSS分配给jquery中的嵌套img

javascript - 如何在一页上使用多个日期选择器

javascript - Jquery .datepicker() - 在动态表上

javascript - 在js中压缩数据数组

javascript - 如何在node.js上实现jQuery直接上传到Cloudinary