2017-02-16 64 views

回答

0

我同意使用moment.js。但是,如果你出於某種原因不想或不能,這裏是你的小提琴的解決方案。

http://jsfiddle.net/jonofan/YdeY8/483/

$('.datepicker').on('change', function() { 
     var fromParts = $('#CheckInDate').val().split('-');  
     var toParts = $('#CheckOutDate').val().split('-'); 

     //please put attention to the month (parts[0]), Javascript counts months from 0: 
     // January - 0, February - 1, etc 

     var fromDate = new Date(fromParts[2],fromParts[0]-1,fromParts[1]); 
     var toDate = new Date(toParts[2],toParts[0]-1,toParts[1]); 

     if (fromDate >= toDate) { 
     alert('Check in must be before check out!') 
     } 
    }) 

必須拆分你的約會對象成部分原因是因爲的JavaScript Date()對象只分析特定的格式,你不能自定義格式。這就是爲什麼使用像moment.js這樣的庫很好,因爲它可以非常靈活地處理所有事情。

根據經驗,如果要更改日期格式,使用字符串拆分來分析日期會變得有問題。假設在6個月內想要將日期從dd-mm-yy更改爲dd/mm/yy;你將不得不去更新你的字符串拆分代碼。

+0

感謝您的回覆。有沒有辦法把checkInDate.datepicker和checkOutDate.datepicker函數放在.datepicker函數中。因爲我需要通過類名訪問控制字段,而不是通過控制名。 – Ammu

+0

@Ammu你當然可以通過'$('。datepicker')訪問它們,但是你需要知道哪些是簽入,哪些是簽出。爲此,我認爲你可能仍然需要IDS。感謝您是否可以'標記爲答案',如果這是有用的。 – jonofan

0

你可以使用momentJS來驗證,如果你日期早於或等於。
一個簡單的代碼,如:

if(moment(fistDate).isBefore(moment(secondDate)) || moment(firstDate).isSame(moment(secondDate)) { 

} 

在這個例子中,在第一次約會代表你的DateTimePicker的價值,第二個日期是你希望它是,因爲你從來沒有告訴它是什麼什麼的。

+0

感謝您的回覆。我的編碼工作正常。是否有任何方法將checkInDate.datepicker和checkOutDate.datepicker函數放入.datepicker函數中。因爲我需要通過類名訪問控制字段,而不是通過控制名。 – Ammu