2010-01-07 9 views
24

Mam 2 pola tekstowe na mojej stronie na datę odbioru i datę wygaśnięcia zarówno przy użyciu wyboru daty jquery.jak dodać dzień do daty za pomocą jquery datepicker

Mam problem z ustawieniem wartości daty wycofania na jeden dzień przed datą odbioru, która została wybrana.

Oto co mam:

$('.pickupDate').change(function() { 
    var date2 = $('.pickupDate').datepicker('getDate', '+1d'); 
    $('.dropoffDate').datepicker('setDate', date2); 
}); 

Powyższy wykona ale wartość w polu tekstowym odwiezienia będzie odpowiadać wartości pobierającej zamiast jeden dzień naprzód. np .: jeśli wybiorę 01-01-2010 powyższy kod zwróci 01-01-2010 w polu drop off zamiast 02-01-2010.

Jakieś myśli?

Dzięki za pomoc, Rich

Odpowiedz

63

Spróbuj tego:

$('.pickupDate').change(function() { 
    var date2 = $('.pickupDate').datepicker('getDate', '+1d'); 
    date2.setDate(date2.getDate()+1); 
    $('.dropoffDate').datepicker('setDate', date2); 
}); 
+0

Dzięki za to. Pracowałem na poczęstunek :) –

+3

Powyższe działa również dla mnie. Ale dlaczego część "+ 1d" w linii 2? Usunąłem "+ 1d" z drugiej linii i to też działa. – thd

+0

świetne rozwiązanie, wypróbowane 10 innych sposobów na zwiększenie daty w javascript i żaden nie działał. – mircea

4

datepicker ('setDate') ustawia datę w datepicket nie na wejściu.

Powinieneś dodać datę i ustawić ją na wejściu.

var date2 = $('.pickupDate').datepicker('getDate'); 
var nextDayDate = new Date(); 
nextDayDate.setDate(date2.getDate() + 1); 
$('input').val(nextDayDate); 
+1

miałem to wcześniej, ale kiedy go użyłem, to tylko wynik taki jak "Niedz 17 stycznia 2010 00:00:00 GMT + 0000 (GMT Standard Time)" zamiast "17 -01-2010", nawet jeśli podałem opcję dateformat. Bardzo dziwne. Dzięki za pomoc. –

7

Ta odpowiedź naprawdę pomógł mi zacząć (Noob) - ale napotkał pewne dziwne zachowanie kiedy ustawić datę rozpoczęcia 12/31/2014 i dodaje +1 do domyślnych datę zakończenia. Zamiast podawać datę zakończenia 01.01.2015 otrzymywałem 02/01/2015 (!!!). W tej wersji analizowane są komponenty daty rozpoczęcia, aby uniknąć dziwności końca roku.


$("#date_start").datepicker({ 

    minDate: 0, 
    dateFormat: "mm/dd/yy", 

    onSelect: function(selected) { 
     $("#date_end").datepicker("option","minDate", selected); // mindate on the End datepicker cannot be less than start date already selected. 
     var date = $(this).datepicker('getDate'); 
     var tempStartDate = new Date(date); 
     var default_end = new Date(tempStartDate.getFullYear(), tempStartDate.getMonth(), tempStartDate.getDate()+1); //this parses date to overcome new year date weirdness 
     $('#date_end').datepicker('setDate', default_end); // Set as default       
    } 

}); 

$("#date_end").datepicker({ 

    minDate: 0, 
    dateFormat: "mm/dd/yy", 

    onSelect: function(selected) { 
    $("#date_start").datepicker("option","maxDate", selected); // maxdate on the Start datepicker cannot be more than end date selected. 

    } 

}); 
+0

Ta odpowiedź zadziałała. Przyjęta odpowiedź nie zadziałała. Zgadnij, zależy to od tego, która wersja datepicker może być? W każdym razie, dzięki za to! –

Powiązane problemy