如何在语义ui-calendar中禁用过去的日期

时间:2017-12-08 05:01:15

标签: javascript calendar semantic-ui

我正在尝试持续一周来自定义语义UI日历禁用过去的日期。我想要这样我粘贴下面的示例网址。我的条件是,如果我选择结束日期,那么如果我打开开始日期,那么无论我在开始日历中选择的结束日期都会被禁用。

示例:

http://jsfiddle.net/nicolapeluchetti/dAyzq/1/

$containerEventsAlerts.find('#rangeStart').calendar({
        type: 'date',
        maxDate: new Date(today.getFullYear(), today.getMonth(), today.getDate()),
        endCalendar: $containerEventsAlerts.find('#rangeEnd'),
        onChange: function(date, text, mode) {
            var $rangeEnd = $('#rangeEnd input');
            if (spa.isBlank($rangeEnd.val())) {
                //console.log($rangeEnd.val());
                $('#rangeEnd input').val(text);
            }
        },
        isDisabled: function(date, mode) {
            return true;
        },
        onHidden: function() {
            var $rangeStart = $('#rangeStart input');
            if (spa.isBlank($rangeStart.val())) {
                $rangeStart.val($('#rangeEnd input').val())
            }
        }
    });

    $containerEventsAlerts.find('#rangeEnd').calendar({
        type: 'date',
        maxDate: new Date(today.getFullYear(), today.getMonth(), today.getDate()),
        startCalendar: $containerEventsAlerts.find('#rangeStart'),
        onChange: function(date, text, mode) {
            var rangeStart = $('#rangeStart input');
            if (spa.isBlank(rangeStart.val())) {
                $('#rangeStart input').val(text);
            }
        },
        onHidden: function() {
            var $rangeEnd = $('#rangeEnd input');
            if (spa.isBlank($rangeEnd.val())) {
                $rangeEnd.val($('#rangeStart input').val())
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

您正在使用的库中没有内置的解决方案。但是你可以在下面做一个黑客攻击。

var today = new Date();
$('#rangestart').calendar({
  type: 'date',
  onChange: function(date, text, mode) {
    $('#rangeend').calendar({
      type: 'date',
      minDate: date
    })
  }
});
$('#rangeend').calendar({
  type: 'date',
  onChange: function(date, text, mode) {
    $('#rangestart').calendar({
      type: 'date',
      maxDate: date
    })
  }
});

根据您的需要,可能需要进行一些修改。但是你必须手动完成所有操作。