2010-01-07 11 views
24

Tôi có 2 hộp văn bản trên trang web của tôi cho ngày bắt và ngày tải xuống cả bằng cách sử dụng bộ chọn ngày tháng jquery.cách thêm ngày vào ngày bằng cách sử dụng bộ đếm ngày tháng jquery

Tôi đang gặp sự cố khi đặt giá trị ngày hủy bỏ là một ngày trước ngày nhận được chọn.

Dưới đây là những gì tôi có:

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

trên sẽ thực hiện nhưng giá trị trong thả ra textbox sẽ khớp với giá trị bán tải thay vì một ngày nào đó ở phía trước. ví dụ: nếu tôi chọn 01-01-2010 thì mã trên trả về 01-01-2010 trong hộp thả ra thay vì ngày 02-01-2010.

Mọi suy nghĩ?

Nhờ sự giúp đỡ của bạn, Giàu

Trả lời

63

Hãy thử điều này:

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

Cảm ơn vì điều đó. Làm việc một điều trị :) –

+3

Các công trình trên cho tôi quá. Nhưng tại sao phần "+ 1d" trong dòng 2? Tôi đã xóa "+ 1d" khỏi dòng thứ hai và nó cũng hoạt động. – thd

+0

giải pháp tuyệt vời, đã thử 10 cách khác để tăng ngày trong javascript và không làm việc. – mircea

4

Các datepicker ('setDate') thiết lập ngày trong datepicket không có trong đầu vào.

Bạn nên thêm ngày và đặt ngày đó vào đầu vào.

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

Tôi đã có trước đó nhưng khi tôi sử dụng nó nó sẽ chỉ sản lượng như 'Sun Jan 17 2010 00:00:00 GMT + 0000 (GMT Standard Time)' thay vì '17 -01-2010 'ngay cả khi tôi đã chỉ định tùy chọn dateformat. Rất kỳ quặc. Cảm ơn sự giúp đỡ của bạn. –

7

Câu trả lời này thực sự đã giúp tôi bắt đầu (noob) - nhưng tôi gặp phải một số hành vi lạ khi tôi đặt ngày bắt đầu là ngày 31/12/2014 và thêm +1 vào ngày kết thúc mặc định. Thay vì cho tôi một ngày kết thúc ngày 01/01/2015 tôi đã nhận được ngày 02/01/2015 (!!!). Phiên bản này phân tích các thành phần của ngày bắt đầu để tránh những kỳ quặc cuối năm này.


$("#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

Câu trả lời này phù hợp với tôi. Câu trả lời được chấp nhận không hoạt động. Đoán nó phụ thuộc vào phiên bản của datepicker có lẽ? Dù sao, cảm ơn cho điều này! –