2016-09-29 6 views
0

Я пытаюсь вычеркнуть прошедшие даты в jquery ui datepicker, но позволяя пользователю выбрать их.jQuery Datepicker - de-emphasisize (не отключить) за последние

Единственное, что позволяет что-то подобное, это вариант minDate: 0, но он предназначен для полного отключения прошлых дат. JQuery даже не отмечает их другим классом, чтобы просто применить другой стиль.

ответ

1

Вы пробовали beforeShowDay функцию обратного вызова?

Вот краткий пример: https://jsfiddle.net/salih0vicX/wnenpfpx/


$("#datepicker").datepicker({ 
     beforeShowDay : function(date) 
     { 
      var today = new Date(); 
      var isToday = (today>date); 
      if(isToday) return [true, 'myClass', 'Some caption (if needed)']; 
      else return [true, '', '']; //default ... you can pass false to disable this date 
     }, 
    }); 
+0

Спасибо. Поскольку это берет во внимание и сегодня, потому что объект date не имеет времени, пока Date() делает. Я пытаюсь изменить его, используя ISO 8601, чтобы сравнить даты. – Fehu

+0

он работал отлично. Теперь у меня есть новая идея, но мне нужно манипулировать html в теге любого дня. Возможно? – Fehu

+0

@Fehu Можете ли вы дать мне один пример того, что вы хотите достичь? Только определенные дни или каждый в календаре? Пожалуйста, дайте мне пример .. Спасибо. – salih0vicX

1

Это должно делать то, что вы хотите:

$('.datepicker').datepicker({ 
    beforeShowDay: function (date) { 
     var d = date.getTime(); 
     if (d < new Date()) { 
      return [true, 'myClassForPastDates', '']; 
     } else { 
      return [true, '']; 
     } 
    } 
}); 

В функции вы должны вернуть имя класса, который вы хотите добавить. Но вы должны посмотреть, как вы перезаписываете темы css по умолчанию.

http://jsfiddle.net/97L93a3h/21/