Мне нужно отключить все даты, которые не относятся к текущему сфокусированному месяцу. Пытался использовать атрибут date-disabled
на основе выбранной даты, но он навсегда отключает даты. Даты остаются отключенными при изменении месяца.
Я подумал об альтернативном решении: ко всем датам, не относящимся к текущему месяцу, применяется класс «приглушенный текст». Пытался создать указанную ниже директиву, которая проверяла класс и отключала даты. Но это вообще не работает. Кто-нибудь может посмотреть?
HTML:
<datepicker ng-model="dt" show-weeks="false" disable-muted-dates />
JavaScript:
angular.module('app', ['ui.bootstrap'])
.directive('disableMutedDates',[function () {
return {
link:function (scope,element) {
var datepicker = element;
var table = angular.element(datepicker.children()[0]);
var tbody = angular.element(table.children()[1]);
var trs = angular.element(tbody.children());
for (var i = trs.length - 1; i >= 0; i--) {
var tr = angular.element(trs[i]);
var tds = angular.element(tr.children());
for (var j = tds.length - 1; j >= 0; j--) {
var td = angular.element(tds[j]);
if (angular.element(td.children()[0]).prop('tagName') === 'BUTTON') {
var button = angular.element(td.children()[0]);
var span = angular.element(button.children()[0]);
if (span.hasClass('text-muted')) {
button.attr('disabled',true);
};
};
};
};
}
}
}])