限时优惠活动
亲爱的苦力吧用户,我们为了回馈新老用户一直以来的鼎力支持,即日起(2025-02-06至2025-03-06)凡是购买苦力吧VIP/充值K币的新老用户,都直接可获得买一送一的优惠馈赠。例如:购买一个月的VIP会员可直接获得两个月的VIP会员;充值100K币可直接获得200K币,以此类推!有任何疑问可联系在线客服,感谢各位用户对苦力吧素材的信任与厚爱,我们将一如既往的给大家上新更多优质的素材源码,祝大家开工大吉、工作顺利、心想事成。

javascript支持连续选择多个日期的日历插件

所属分类: 网页特效-日期时间    2025-01-12 02:16:27

javascript支持连续选择多个日期的日历插件 ie兼容8
 查看演示  登录后下载 温馨提示
登录会员即可享受免费下载
 我要建站

javascript支持连续选择多个日期的日历插件(共3个文件)

    • index.html

使用方法

'use strict';

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

var Heading = function Heading(_ref) {
  var date = _ref.date;
  var changeMonth = _ref.changeMonth;
  var resetDate = _ref.resetDate;
  return React.createElement(
    'nav',
    { className: 'calendar--nav' },
    React.createElement(
      'a',
      { onClick: function onClick() {
          return changeMonth(date.month() - 1);
        } },
      '‹'
    ),
    React.createElement(
      'h1',
      { onClick: function onClick() {
          return resetDate();
        } },
      date.format('MMMM'),
      ' ',
      React.createElement(
        'small',
        null,
        date.format('YYYY')
      )
    ),
    React.createElement(
      'a',
      { onClick: function onClick() {
          return changeMonth(date.month() + 1);
        } },
      '›'
    )
  );
};

var Day = function Day(_ref2) {
  var currentDate = _ref2.currentDate;
  var date = _ref2.date;
  var startDate = _ref2.startDate;
  var endDate = _ref2.endDate;
  var _onClick = _ref2.onClick;

  var className = [];

  if (moment().isSame(date, 'day')) {
    className.push('active');
  }

  if (date.isSame(startDate, 'day')) {
    className.push('start');
  }

  if (date.isBetween(startDate, endDate, 'day')) {
    className.push('between');
  }

  if (date.isSame(endDate, 'day')) {
    className.push('end');
  }

  if (!date.isSame(currentDate, 'month')) {
    className.push('muted');
  }

  return React.createElement(
    'span',
    { onClick: function onClick() {
        return _onClick(date);
      }, currentDate: date, className: className.join(' ') },
    date.date()
  );
};

var Days = function Days(_ref3) {
  var date = _ref3.date;
  var startDate = _ref3.startDate;
  var endDate = _ref3.endDate;
  var _onClick2 = _ref3.onClick;

  var thisDate = moment(date);
  var daysInMonth = moment(date).daysInMonth();
  var firstDayDate = moment(date).startOf('month');
  var previousMonth = moment(date).subtract(1, 'month');
  var previousMonthDays = previousMonth.daysInMonth();
  var nextsMonth = moment(date).add(1, 'month');
  var days = [];
  var labels = [];

  for (var i = 1; i <= 7; i++) {
    labels.push(React.createElement(
      'span',
      { className: 'label' },
      moment().day(i).format('ddd')
    ));
  }

  for (var i = firstDayDate.day(); i > 1; i--) {
    previousMonth.date(previousMonthDays - i + 2);

    days.push(React.createElement(Day, { key: moment(previousMonth).format('DD MM YYYY'), onClick: function onClick(date) {
        return _onClick2(date);
      }, currentDate: date, date: moment(previousMonth), startDate: startDate, endDate: endDate }));
  }

  for (var i = 1; i <= daysInMonth; i++) {
    thisDate.date(i);

    days.push(React.createElement(Day, { key: moment(thisDate).format('DD MM YYYY'), onClick: function onClick(date) {
        return _onClick2(date);
      }, currentDate: date, date: moment(thisDate), startDate: startDate, endDate: endDate }));
  }

  var daysCount = days.length;
  for (var i = 1; i <= 42 - daysCount; i++) {
    nextsMonth.date(i);
    days.push(React.createElement(Day, { key: moment(nextsMonth).format('DD MM YYYY'), onClick: function onClick(date) {
        return _onClick2(date);
      }, currentDate: date, date: moment(nextsMonth), startDate: startDate, endDate: endDate }));
  }

  return React.createElement(
    'nav',
    { className: 'calendar--days' },
    labels.concat(),
    days.concat()
  );
};

var Calendar = function (_React$Component) {
  _inherits(Calendar, _React$Component);

  function Calendar(props) {
    _classCallCheck(this, Calendar);

    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));

    _this.state = {
      date: moment(),
      startDate: moment().subtract(5, 'day'),
      endDate: moment().add(3, 'day')
    };
    return _this;
  }

  Calendar.prototype.resetDate = function resetDate() {
    this.setState({
      date: moment()
    });
  };

  Calendar.prototype.changeMonth = function changeMonth(month) {
    var date = this.state.date;

    date.month(month);

    this.setState(date);
  };

  Calendar.prototype.changeDate = function changeDate(date) {
    var _state = this.state;
    var startDate = _state.startDate;
    var endDate = _state.endDate;

    if (startDate === null || date.isBefore(startDate, 'day') || !startDate.isSame(endDate, 'day')) {
      startDate = moment(date);
      endDate = moment(date);
    } else if (date.isSame(startDate, 'day') && date.isSame(endDate, 'day')) {
      startDate = null;
      endDate = null;
    } else if (date.isAfter(startDate, 'day')) {
      endDate = moment(date);
    }

    this.setState({
      startDate: startDate,
      endDate: endDate
    });
  };

  Calendar.prototype.render = function render() {
    var _this2 = this;

    var _state2 = this.state;
    var date = _state2.date;
    var startDate = _state2.startDate;
    var endDate = _state2.endDate;

    return React.createElement(
      'div',
      { className: 'calendar' },
      React.createElement(Heading, { date: date, changeMonth: function changeMonth(month) {
          return _this2.changeMonth(month);
        }, resetDate: function resetDate() {
          return _this2.resetDate();
        } }),
      React.createElement(Days, { onClick: function onClick(date) {
          return _this2.changeDate(date);
        }, date: date, startDate: startDate, endDate: endDate })
    );
  };

  return Calendar;
}(React.Component);

ReactDOM.render(React.createElement(Calendar, null), document.getElementById('calendar'));

站长提示:
1. 苦力吧素材官方QQ群:950875342
2. 平台上所有素材资源,需注册登录会员方能正常下载。
3. 会员用户积极反馈网站、素材资源BUG或错误问题,每次奖励2K币
4. PHP源码类素材,如需协助安装调试,或你有二次开发需求,可联系苦力吧客服。
5. 付费素材资源,需充值后方能下载,如有任何疑问可直接联系苦力吧客服
相关资源 / 日期时间

jquery响应式日历方块热图插件

CalendarHeatmap.js是一个日历热图插件,可生成一个动态交互式、可自定义的日历热图,用于表示时间序列数据。鼠标悬停在小方格上,可显示当前日期时间。
  日期时间
 7312  0

2024新年倒计时雪花飘落特效代码

一款新年倒计时特效代码,随机位置大小的雪花从天而降,效果很逼真!倒计时可指定一个日期时间,自动倒计时(天时分秒)。
  日期时间
 8514  0

原生js编写的12小时格式的在线网页时钟插件

这是一个纯JS编写的网页时钟,脚本初始化小时、分钟、秒和AM/PM的变量,准确的显示当前系统时间。
  日期时间
 4317  0

js轻量级支持自定义的定时器倒计时插件

这是一款Pomodoro时钟定时器插件,该小部件显示会话和中断持续时间,鼠标点击加号和减号按钮进行轻松调整时间,开始和停止按钮控制计时器。
  日期时间
 1317  0

评论数(0) 回复有机会获得K币 用户协议

^_^ 还没有人评论,快来抢个沙发!
😀
  • 😀
  • 😊
  • 😂
  • 😍
  • 😑
  • 😷
  • 😵
  • 😛
  • 😣
  • 😱
  • 😋
  • 😎
  • 😵
  • 😕
  • 😶
  • 😚
  • 😜
  • 😭
发表评论