Minimalna data na drugim polu datepicker


(Aglasek) #1

Witam,

Mam dwa pola input na których działa datepicker. Gdy wybieram date na polu o klasie "data_od" chciałbym aby w polu o klasie data_do można było wybrać jako datę minimalną taką jaka jest w polu o klasie "data_od" czyli gdy w pierwszym polu wybiorę np. 25-03-2013 to w drugim mogę jako minimalną datę wybrać 26-03-2013.

Poniżej mój kod odpowiadający za datepicker.

$( ".data_od" ).datepicker({

                dateFormat: 'yy-mm-dd',

                monthNames: ['Stycze\u0144','Luty','Marzec','Kwiecie\u0144','Maj','Czerwiec','Lipiec','Sierpie\u0144','Wrzesie\u0144','Pa\u017adziernik','Listopad','Grudzie\u0144'],

                firstDay: 1,

                minDate: 0,

                dayNamesMin: ['Ni', 'Pn', 'Wt', '\u015ar', 'Cz', 'Pt', 'So']

        });


        $( ".data_do" ).datepicker({

                dateFormat: 'yy-mm-dd',

                monthNames: ['Stycze\u0144','Luty','Marzec','Kwiecie\u0144','Maj','Czerwiec','Lipiec','Sierpie\u0144','Wrzesie\u0144','Pa\u017adziernik','Listopad','Grudzie\u0144'],

                firstDay: 1,

                minDate: 0,

                dayNamesMin: ['Ni', 'Pn', 'Wt', '\u015ar', 'Cz', 'Pt', 'So']

        });

(ziggurad) #2

Pisałem takie coś dawno temu :stuck_out_tongue:

Odkopany kod:

//datepicker

    $(function() {

        $( "#od, #do" ).datepicker({

            minDate: date,

			showOn: "both",

			buttonImage: "../img/calendar.png",

			buttonImageOnly: true,

			numberOfMonths: 1,

            changeMonth: false,

            dateFormat: 'DD, d MM yy',

            firstDay: 1,

            closeText: 'Zamknij',

            prevText: '<Poprzedni',

            nextText: 'Następny>',

            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',

			onSelect: function( selectedDate ) {


                var id;

                var option = this.id == "od" ? "minDate" : "maxDate",

					instance = $( this ).data( "datepicker" );

                date = $.datepicker.parseDate(

					instance.settings.dateFormat ||

					$.datepicker._defaults.dateFormat,

					selectedDate, instance.settings );

                if (this.id == "od") {

                    id="#do";

                    date2=new Date (date.getTime() + (24*60*60*1000))

                } else {

                    id="#od";

                    date2=new Date (date.getTime() - (24*60*60*1000))

                }

                $('#'+this.id+'m').val(date.getTime());

                $(id).datepicker( "option", option, date2 );

                sprawdz_rezerwacje(id,2);


			}

		});

	});

Myślę że to może CI się spodobać:

onSelect: function( selectedDate ) {


                var id;

                var option = this.id == "od" ? "minDate" : "maxDate",

					instance = $( this ).data( "datepicker" );

                date = $.datepicker.parseDate(

					instance.settings.dateFormat ||

					$.datepicker._defaults.dateFormat,

					selectedDate, instance.settings );

                if (this.id == "od") {

                    id="#do";

                    date2=new Date (date.getTime() + (24*60*60*1000))

                } else {

                    id="#od";

                    date2=new Date (date.getTime() - (24*60*60*1000))

                }

                $('#'+this.id+'m').val(date.getTime());

                $(id).datepicker( "option", option, date2 );



			}

To było używane podczas wyboru daty rezerwacji pokoju w hotelu. Jak klikłeś że przyjeżdżasz 23 to wyjechać najwcześniej mogłeś 24 i na odwót jak chciałeś wyjechać 24 to przyjazd musiał być 23 lub wcześniej.

Skrypt sprawdza w którym polu jest zdarzenie wyboru (od czy do) i w zależności od tego ustawia odpowiednią opcję ograniczenia czasu +1 lub -1 dzień.

Jak coś to pisz

Pozdro