2014-03-02 121 views
0

我有一個使用jQuery UI datepicker的頁面。我想提出以下發生在我的網頁上:jQuery功能評估時間

  • 點擊日期字段 - >日曆彈出(日期選擇器需要照顧這個)
  • 點擊日曆天 - > Ajax請求打完,做一些服務器端計算(檢查計劃衝突等),並在忙碌的一天顯示警告

這不完全是一個驗證,因爲意圖是顯示一個警告,但仍然允許用戶提交他們想要的任何一天。

我到目前爲止已經燒掉了ajax,但使用了錯誤的日期。我認爲它是在頁面加載時抓取日期,而不是點擊日曆時,所以我猜測datepicker('getDate')正在加載時進行評估。我怎樣才能構建這個動態評估?下面是最新的版本(在CoffeeScript中):

jQuery -> 
    $("#rescheduler").click -> 
    $("td[data-handler='selectDay'] a").click -> 
     id = getUrlVars()["booking_id"] 
     newDate = new Date(datepicker.datepicker('getDate')) 
     postData = {} 
     postData['booking_id'] = id 
     postData['date'] = newDate 
     $.post '/path/to/check_stuff', postData, ((data) -> doStuff), "json" 

或者,如果你喜歡原生的JavaScript:

jQuery(function() { 
    return $("#rescheduler").click(function() { 
    return $("td[data-handler='selectDay'] a").click(function() { 
     var id, newDate, postData; 
     id = getUrlVars()["booking_id"]; 
     newDate = new Date(datepicker.datepicker('getDate')); 
     postData = {}; 
     postData['booking_id'] = id; 
     postData['date'] = newDate; 
     return $.post('/path/to/check_stuff', postData, (function(data) { 
     return doStuff; 
     }), "json"); 
    }); 
    }); 
}); 

回答

0

我懷疑是正在發生的事情是日期選取器設置日期,比方說,3月2日,但是這被設置爲UTC時間,因此該值類似於2014年3月2日00:00:00。然後,當您通過傳入值創建新日期時,您的時區將被添加到混合中,導致日期顯示爲關閉。

如果是這樣(嘗試記錄某些值以查看正在處理的內容),那麼您需要修改日期選擇器值來考慮時區。

喜歡的東西:

localDate  = new Date(dateToFix); //dateToFix would be the value from the date picker 
    localTime  = localDate.getTime(); 
    localOffset  = localDate.getTimezoneOffset() * 60000; 
    adjustedDate = new Date(localTime + localOffset);