我正在創建一個自定義的ASP.Net驗證器,用於檢查輸入的數據是否爲非工作日。檢查日期是否匹配javascript
「非工作日」的定義是:
- 的日期或者是週六或週日
- 日期爲節假日
我編寫C#的東西併爲錯誤消息和一組假期日期創建了expando屬性。完成之後,我創建了一個包含此代碼的JavaScript函數來檢查無工作日。爲了簡潔,我刪除了其他代碼。
if (sender.NonWorkingDayErrorMessage && sender.Holidays) {
// Is weekend
if (date.getDay() == 6 || date.getDay() == 0) {
sender.innerHTML = sender.NonWorkingDayErrorMessage;
return;
}
// Is holiday
var holidays = sender.Holidays.split(";");
for (var i = 0; i < holidays.length; i++) {
var h = new Date(Date.parse(holidays[i]));
if (h === date) {
sender.innerHTML = sender.NonWorkingDayErrorMessage;
return;
}
}
}
我的問題是,代碼H ===日期始終是假的 - 這裏的輸出我得到的,當我在26/8/2013添加提醒和類型。
星期一2013年8月26日00:00:00 GMT + 0100(GMT標準時間)=>週一2013年8月26日00:00:00 GMT + 0100(GMT標準時間)=>假
正如你可以看到我解析假期,但我也進一步驗證輸入「日期」像這樣像這樣的功能:
// Deconstruct string and reconstruct
// as date.
var parts = args.Value.split("/");
var day = parseInt(parts[0],10);
var month = parseInt(parts[1],10) -1;
var year = parseInt(parts[2],10);
var date = new Date(year, month, day);
// Valid date format but not a valid date
if (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) {
sender.innerHTML = sender.InvalidErrorMessage;
return;
}
任何人有想法,爲什麼這兩個日期都不會被視爲比賽嗎?
的日期比較和分析處理的時候,我會強烈建議您使用外部庫。這個很好用:https://code.google.com/p/datejs/ – Saturnix
另一種選擇是[node-date-utils](https://github.com/JerrySievert/node-date-utils/blob /master/lib/date-utils.js)lib(可在瀏覽器中使用)。 – jabclab
如果你已經在服務器端正常工作,只需使用AJAX進行驗證即可。額外的要求,但少了頭痛。 –