Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jQuery UI Datepicker - nieaktywne daty
htk
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 8.07.2011

Ostrzeżenie: (0%)
-----


Witam,

korzystam w tworzonym serwisie ze skryptu Datepicker. Wszystko działa sprawnie, lecz potrzebuję zrobić z kalendarzem coś, czego nie znalazłem w dokumentacji. Otóż, chcę by niektóre daty były nieaktywne (niemożliwe do wybrania). Przykładowo: rozwijam kalendarz i mam listopad, ale np. między 24-28 listopada potrzebuję by data była nieaktywna, tzn. nie można wybrać daty z tego zakresu (między 24 a 28 listopadem).
Proszę o pomoc w tej sprawie, w razie pytań jestem do dyspozycji.

Pozdrawiam!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
htk
post
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 8.07.2011

Ostrzeżenie: (0%)
-----


Kod
      <script type="text/javascript">
          var disabledDays = ["2011-11-10","2011-11-15"];
          
    function nationalDays(date) {
      var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
      //console.log('Checking (raw): ' + m + '-' + d + '-' + y);
      for (i = 0; i < disabledDays.length; i++) {
        if(jQuery.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1 || new Date() > date) {
          //console.log('bad:  ' + (m+1) + '-' + d + '-' + y + ' / ' + disabledDays[i]);
          return [false];
        }
      }
      //console.log('good:  ' + (m+1) + '-' + d + '-' + y);
      return [true];
    }
    function noWeekendsOrHolidays(date) {
      var noWeekend = jQuery.datepicker.noWeekends(date);
      return noWeekend[0] ? nationalDays(date) : noWeekend;
    }

      jQuery(document).ready(function() {
            jQuery("#kamper_data1").datepicker();
            jQuery("#kamper_data2").datepicker();
      });
    
    jQuery(function($){
            $.datepicker.regional['pl'] = {
                    closeText: 'Zamknij',
                    prevText: '&#x3c;Poprzedni',
                    nextText: 'Następny&#x3e;',
                    currentText: 'Dziś',
                    monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
                    'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
                    monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
                    'Lip','Sie','Wrz','Pa','Lis','Gru'],
                    dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
                    dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
                    dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
                    weekHeader: 'Tydz',
                    dateFormat: 'yy-mm-dd',
                    minDate: 0,
                    firstDay: 1,
                    isRTL: false,
                    showMonthAfterYear: false,
                    constrainInput: true,
                    beforeShowDay: noWeekendsOrHolidays,
                    yearSuffix: ''};
            $.datepicker.setDefaults($.datepicker.regional['pl']);
    });
      </script>


Dwie kolumny kalendarza od prawej są nieaktywne niezależnie od tego co wpiszę w
Kod
var disabledDays = [];
. Jeśli wpiszę tam jakieś daty, np:
Kod
var disabledDays = ["11-24-2011"];
- wówczas nieaktywna robi się data 24 listopada 2011 (to właśnie chce osiągnąć), ale oprócz tego nieaktywna robi się dzisiejsza data i jak wspomniałem na początku - dwie kolumny od prawej również są nieaktywne.






Dobra, zrobiłem - działa. Dla zainteresowanych podaję kod:
  1. <script type="text/javascript">
  2. var disabledDays = ["11-24-2011", "11-20-2011"];
  3.  
  4. function nationalDays(date) {
  5. var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
  6. //console.log('Checking (raw): ' + m + '-' + d + '-' + y);
  7. for (i = 0; i < disabledDays.length; i++) {
  8. if(jQuery.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1) {
  9. //console.log('bad: ' + (m+1) + '-' + d + '-' + y + ' / ' + disabledDays[i]);
  10. return [false];
  11. }
  12. }
  13. //console.log('good: ' + (m+1) + '-' + d + '-' + y);
  14. return [true];
  15. }
  16. function noWeekendsOrHolidays(date) {
  17. var noWeekend = jQuery.datepicker.noWeekends(date);
  18. return nationalDays(date);
  19. }
  20.  
  21. jQuery(document).ready(function() {
  22. jQuery("#kamper_data1").datepicker();
  23. jQuery("#kamper_data2").datepicker();
  24. });
  25.  
  26. jQuery(function($){
  27. $.datepicker.regional['pl'] = {
  28. closeText: 'Zamknij',
  29. prevText: '&#x3c;Poprzedni',
  30. nextText: 'Następny&#x3e;',
  31. currentText: 'Dziś',
  32. monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
  33. 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
  34. monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
  35. 'Lip','Sie','Wrz','Pa','Lis','Gru'],
  36. dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
  37. dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
  38. dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
  39. weekHeader: 'Tydz',
  40. dateFormat: 'yy-mm-dd',
  41. minDate: 0,
  42. firstDay: 1,
  43. isRTL: false,
  44. showMonthAfterYear: false,
  45. constrainInput: true,
  46. beforeShowDay: noWeekendsOrHolidays,
  47. yearSuffix: ''};
  48. $.datepicker.setDefaults($.datepicker.regional['pl']);
  49. });
  50. </script>


Ten post edytował htk 14.11.2011, 15:35:53
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 08:28