2016-09-20 100 views
0

我试图禁用从角度boostrap datetimepicker过去的日期。我发现为了做到这一点,我应该使用禁用日期,但老实说,我不明白它,也不起作用。角度助推器datetimepicker不能禁用过去的日期

<datetimepicker class="calendar-format" 
       data-ng-model="data.date" 
       date-disabled="isDisabledDate(date, mode)"></datetimepicker> 

this.isDisabledDate = function(currentDate, mode) { 
    return mode === 'day' && 
    (currentDate.getDay() === 0 || currentDate.getDay() === 6); 
}; 

我该如何使它不会让我挑选过去的日期?

这是我使用https://www.npmjs.com/package/angular-ui-bootstrap-datetimepicker

我当前的代码,不工作:plnkr.co/edit/VGTFJaVN6Y62Frmt3ksB?p=preview

任何其他的想法如何使人lthe过去的日期得到变灰/无法挑选>?

我尝试了一切。任何想法我在这里做错了吗?

+0

您正在使用哪个指令或插件? – nirmal

+0

https://www.npmjs.com/package/angular-ui-bootstrap-datetimepicker – Mocktheduck

+0

@Mocktheduck的答案是否解决了您的问题? –

回答

0

那么你可以使用下面的代码来通过在JS中设置最小日期范围对象来禁用过去的日期。

$scope.dateOptions = { 
      formatYear: 'yyyy', 
      startingDay: 1 
    }; 
$scope.opened = true; 
$scope.minDate= new Date();//today and future dates will be enabled.. 
    var maxDate = new Date(); 
    maxDate.setFullYear (maxDate.getFullYear() + 2);//enable for 2 future years.. 
$scope.maxDate= maxDate; 

你的HTML看起来像这样

<input type="text" class="form-control selection-box" 
           id="datepicker" 
           datepicker-popup="{{dateFormat}}" 
           ng-model="selectedDate" is-open="opened" 
           min-date="minDate" max-date="maxDate" 
           datepicker-options="dateOptions" readonly="readonly" 
           ng-change="changeDate()" 
           close-text="Close" ng-required="true" /> 

在角UI的自举的DateTimePicker的情况下,你可以在你的的js

以下方式设定分钟日期日期选择做
$scope.dateOptions = { 
    showWeeks: false, 
    startingDay: 0 
    }; 

    var minDate = new Date(); 
    minDate.setDate(minDate.getDate()); 
    $scope.dateOptions.minDate = minDate; 

在HTML

<datetimepicker class="calendar-format" date-options="dateOptions" data-ng-model="data.date" date-disabled="isDisabledDate(date, mode)"></datetimepicker> 
+0

这不是使用我正在使用的相同日历。我不希望我的整个事情改变 – Mocktheduck

+0

好吧!我会根据它更新答案,这个日期选择器是相对容易的,所以我建议它。你可以发布一个你试过的东西。 –

+0

我想从角度提升使用datetimepicker。我尝试使用日期 - 禁用,我试着使用日期 - 选项...可能我没有正确使用它们或没有,他们没有为我工作。我仍然可以选择任何日期 – Mocktheduck

-1

如果您想根据选择动态禁用日期,则可以使用最小和最大属性以及观察者。

JS

$scope.endDateBeforeRender = endDateBeforeRender 
$scope.endDateOnSetTime = endDateOnSetTime 
$scope.startDateBeforeRender = startDateBeforeRender 
$scope.startDateOnSetTime = startDateOnSetTime 

function startDateOnSetTime() { 
    $scope.$broadcast('start-date-changed'); 
} 

function endDateOnSetTime() { 
    $scope.$broadcast('end-date-changed'); 
} 

function startDateBeforeRender ($dates) { 
    if ($scope.dateRangeEnd) { 
    var activeDate = moment($scope.dateRangeEnd); 

    $dates.filter(function (date) { 
     return date.localDateValue() >= activeDate.valueOf() 
    }).forEach(function (date) { 
     date.selectable = false; 
    }) 
    } 
} 

function endDateBeforeRender ($view, $dates) { 
    if ($scope.dateRangeStart) { 
    var activeDate = moment($scope.dateRangeStart).subtract(1, $view).add(1, 'minute'); 

    $dates.filter(function (date) { 
     return date.localDateValue() <= activeDate.valueOf() 
    }).forEach(function (date) { 
     date.selectable = false; 
    }) 
    } 
} 

HTML

 <div class="dropdown form-group"> 
    <label>Start Date</label> 
    <a class="dropdown-toggle" id="dropdownStart" role="button" data-toggle="dropdown" data-target="#" 
     href="#"> 
     <div class="input-group date"> 
      <input type="text" class="form-control" data-ng-model="dateRangeStart"> 
      <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span> 
     </div> 
    </a> 
    <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> 
     <datetimepicker data-ng-model="dateRangeStart" 
         data-datetimepicker-config="{ dropdownSelector: '#dropdownStart', renderOn: 'end-date-changed' }" 
         data-on-set-time="startDateOnSetTime()" 
         data-before-render="startDateBeforeRender($dates)"></datetimepicker> 
    </ul> 
</div> 

<div class="dropdown form-group"> 
    <label>End Date</label> 
    <a class="dropdown-toggle" id="dropdownEnd" role="button" data-toggle="dropdown" data-target="#" 
     href="#"> 
     <div class="input-group date"> 
      <input type="text" class="form-control" data-ng-model="dateRangeEnd"> 
      <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span> 
     </div> 
    </a> 
    <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> 
     <datetimepicker data-ng-model="dateRangeEnd" 
         data-datetimepicker-config="{ dropdownSelector: '#dropdownEnd', renderOn: 'start-date-changed' }" 
         data-on-set-time="endDateOnSetTime()" 
         data-before-render="endDateBeforeRender($view, $dates, $leftDate, $upDate, $rightDate)"></datetimepicker> 
    </ul> 
</div> 
+0

我想使用标签 – Mocktheduck

+0

现在我知道你关心 –

+0

我编辑了我的答案,试试看!它为我工作很长时间 –

0

只是把

属性在HTML

date-options="dateOptions" 

更新HTML到

<datetimepicker class="calendar-format" data-ng-model="data.date" date-disabled="isDisabledDate(date, mode)" date-options="dateOptions"></datetimepicker> 

和JS

$scope.dateOptions.minDate = new Date(); 

这里把下面的代码是它plunker。

http://plnkr.co/edit/s6Gm8x8ExndUj6EBYbhi?p=preview

+0

这是我遵循的代码,但它不起作用。这是我有http://plnkr.co/edit/VGTFJaVN6Y62Frmt3ksB?p=preview – Mocktheduck

+0

对不起,但该plunker不工作,它只是显示的{{}} –

+0

我知道它不工作,我不明白为什么但我只是想向您展示代码。 – Mocktheduck

相关问题