2012-06-21 58 views
6

Tôi có hai lịch ngày, một ngày bắt đầu và ngày khác cho ngày kết thúc.Trình chỉnh sửa ngày tháng của giao diện người dùng jQuery: thêm 6 tháng vào một công cụ datepicker khác

Điều tôi muốn là đặt động mặc định Ngày tháng của thanh công cụ ngày thứ hai chậm hơn 6 tháng so với ngày đầu tiên, khi ngày đầu tiên được chọn.

tôi biết làm thế nào để báo cáo ngày fisrt để datepicker thứ hai, nhưng tôi không biết làm thế nào để thêm sáu tháng để là người đầu tiên sau đó thêm nó như là defaultdate của datepicker thứ hai

Đây là mã của tôi:

$(".firstcal").datepicker({ 
    dateFormat: "dd/mm/yy", 
    onSelect: function (dateText, inst) { 
     var date = $.datepicker.parseDate('dd/mm/yy', dateText); 
     var $sec_date = $(".secondcal"); 
     $sec_date.datepicker("option", "defaultDate", date); 
    } 
}); 
$(".secondcal").datepicker({ 
    dateFormat: "dd/mm/yy" 
}); 

Cảm ơn rất nhiều sự giúp đỡ của bạn

Edit:

Trong datepicker, chức năng để thêm sáu tháng đến một ngày tồn tại: đó là labele d "+ 6 triệu". Tôi chỉ muốn thêm "+ 6M" vào ngày đầu tiên và gửi nó làm ngày mặc định cho ngày thứ hai.

Trả lời

7
  1. Phân tích chuỗi ngày đã chọn vào một hoạt Javascript đối tượng ngày tháng.
  2. Sử dụng Date.getMonth()Date.setMonth() để thay đổi tháng. Hàm thứ hai tự động tăng/giảm dần trong năm nếu cần.
  3. Sử dụng phương thức setDate của trình soạn thảo ngày của jQuery để thay đổi ngày của ngày tháng hai (đặt defaultDate sẽ không cung cấp cho bạn kết quả mong muốn).
onSelect: function(dateText, instance) { 
    date = $.datepicker.parseDate(instance.settings.dateFormat, dateText, instance.settings); 
    date.setMonth(date.getMonth() + 6); 
    $(".secondcal").datepicker("setDate", date); 
} 

Demo here

+0

Cảm ơn bạn Salman A! Hoàn hảo ! –

0

Đây là mã tôi sử dụng để đặt ngày tối đa của hộp thoại thứ hai thành một tháng sau ngày đầu tiên. Vì vậy, bạn sẽ chỉ cần đặt ngày mặc định thay vì

var beginsDate=$('#dlg_begins').datepicker('getDate'); 
    var monthMillisec=30*24*60*60*1000; 
    var maxDate=new Date(); 
    maxDate.setTime(beginsDate.getTime() + monthMillisec); 

    $('#dlg_expires').datepicker('option', 
    { 
     'maxDate':maxDate, 
     'minDate':beginsDate 
    }); 
+0

Cảm ơn Matt, Nó giúp tôi, nhưng một phần: vì mỗi tháng không có cùng một số lượng ngày, kết quả là sai. Nếu tôi thêm 15778463000 milliseonds (phù thủy là 182,62 ngày), ngày đầu tiên của tháng bảy thiết lập ngày 30 tháng 12 thay vì đầu tiên của tháng một –

2

Để thêm 6 tháng đến một ngày

var second_date = new Date(date); 
second_date.setMonth(second_date.getMonth()+6); //+6 is however many months 

sau đó cập nhật giá trị

$("#secondcal").val(second_date); //It is probably better to work with ID 
Các vấn đề liên quan