2014-09-23 39 views
0

選擇當前日期時,顯示消息爲You cannot select a day earlier than todayjava腳本比較日期;總是顯示消息,因爲當前日期是早期日期

function checkDate(sender, args) { 
    if (sender._selectedDate) < new Date()) {    
     alert("You cannot select a day earlier than today!"); 
     sender._selectedDate = new Date();    
     sender._textbox.set_Value(sender._selectedDate.format(sender._format)) 
    } 
} 

比較工作不正常。

請幫幫我。

+0

你有一個語法錯誤 – andrex 2014-09-23 11:39:08

+0

是sender._selectedDate一個日期對象嗎? – 2014-09-23 11:39:14

+1

'if(sender._selectedDate) andrex 2014-09-23 11:39:39

回答

0

我猜你的sender._selectedDate的小時,分​​鍾,秒和毫秒爲0。您比較的new Date()將具有設置爲當前時間的小時,分​​鍾,秒和毫秒,該時間可能晚於_selectedDate。因此,您應該創建新日期,然後將其小時,分鐘,秒和毫秒設置爲0.然後,您可以正確比較日期。您可以使用setHours(),並以小時,分鐘,秒和毫秒傳遞。此外,感謝@andrex注意到您也有語法錯誤:在sender._selectedDate後刪除)

function checkDate(sender, args) { 
    var earliestDate = new Date(); 
    earliestDate.setHours(0,0,0,0); 
    if (sender._selectedDate < earliestDate) {    
     alert("You cannot select a day earlier than today!"); 
     sender._selectedDate = earliestDate;    
     sender._textbox.set_Value(sender._selectedDate.format(sender._format)); 
    } 
} 
+0

是的。它的工作..謝謝你... – user3865601 2014-09-24 04:30:43

+0

不客氣。如果這是您的問題的解決方案,那麼您應該通過單擊左側的複選標記來接受它作爲答案。 – forgivenson 2014-09-24 11:26:25

0

不確定使用日期驗證的數據是否適用於這樣的幾個解決方案。 (年/月/日/小時)等和(+/-)發現如果一個或另一個(年/月/日/小時)等不比較(012)或者更早的cq,然後是你的校驗和變量。

我收集你想只比較(年/月/日),所以當這些檢查是有效的丟棄其餘的!

var dag = nu.getDate(); var wkdag = nu.getDay(); var maand = nu.getMonth(); var jaar1 = nu.getYear();

btw。考慮一下,如果表單被立即檢查或稍後檢查,它會產生很大的變化,因爲在函數的驗證和發送消息之間傳遞的時間越多,日期越早(如果馬上檢查並使用服務器時間錯誤的可能性最小,但即使如果在24:00時發送,日期cq日的驗證也將在第二天完成。你可能會想到一些代碼將一個塞子放在洞裏!