2013-07-12 47 views
1

我有一個mootools datepicker(Arian/monkeyphysics)和2個日期輸入字段。
我想在第一天之後的第一天設置第二天的日期。mootools datepicker從其他datepicker設置的值

到目前爲止,我有:

window.addEvent("domready", function(e){ 
    new DatePicker('#arrival_date', { positionOffset: { x: -3, y: 5 }}); 
    new DatePicker('#departure_date', { positionOffset: { x: -3, y: 5 },onShow: function(){test();} 
}); 

function test(){ 
    firstvalue = Date.parse($('arrival_date').value); 
    newvalue = firstvalue.increment(); //ad 1 day to first input date 
    console.log(newvalue); // Logs ok:Fri Jan 16 1970 22:24:11 ... 

    $('arrival_date').set('value', newvalue);   //doesn't work 
    $$('#departure_date').attach('#arrival_date');  //doesn't work 
    $$('#departure_date').select(newvalue);   //doesn't work 
} 

怎麼辦?(在第一個日期後一天設置第二個字段的日期。)

回答

1

該版本的DatePicker使用隱藏的輸入。所以你看到的不是你輸入的值,它有一個unix日期戳。

如果您注意到Date.parse($('arrival_date').value);是在70年代,那是因爲javascript使用的是毫秒,而unix的時間以秒爲單位。要獲得$('arrival_date').value的「真實」日期,您需要乘以1000.但實際上您並不需要這一天。

爲了使第二的DatePicker從第一,你可以使用此得到天:

onSelect: function(){ 
    var depDate = $('departure_date'); 
    if (depDate.value == ""){ 
     depDate.value = $('arrival_date').value + 86400; 
    } 
} 

這將增加一天的第一個日期選擇日期if第二個是空的。問題在於,除非您打開日期選擇器,否則您將不會看到更改,所以如果以編程方式更改該值,用戶將看不到該更改。這意味着如果沒有if,如果用戶再次更改第一個輸入,則會丟失第二個日期,用戶不會注意到,從而導致沮喪/錯誤。

+0

太棒了!謝謝! – Rikard

+0

不客氣。 – Sergio