2012-05-23 45 views
5

MomentJS用於用戶輸入解析嗎?MomentJS - 用於輸入驗證?

我已經輕度地接近簡單案例,讓它接受DDMMYYYY順序中的日期,並處理一些變化。

指定格式時,它不會處理無效日期 - 包括日期值過高或切換年份值在2到4位之間。一年解釋

例子:

var date5 = moment('08302012', 'DDMMYYYY'); // Gives Jun 08 2014 
var date6 = moment('08302012', 'DDMMYY'); // Gives Jun 08 2022 
var date7 = moment('083012', 'DDMMYYYY'); // Gives Jun 08 1902 
var date8 = moment('083012', 'DDMMYY'); // Jun 08 2014 

我創建了一個JS撥弄這些例子:

var date1 = moment('30082012', 'DDMMYYYY'); 
var date2 = moment('30082012', 'DDMMYY'); // Gives wrong year - 2020 
var date3 = moment('300812', 'DDMMYYYY'); // Gives wrong year - 1900 
var date4 = moment('300812', 'DDMMYY'); 

的你會希望是無效的日期例子http://jsfiddle.net/cHRfg/2/

是否有有什麼方法可以接受更廣泛的用戶輸入,並拒絕無效日期?或者圖書館不是爲此而設計的?

回答

1
var parsed = moment(myStringDate, 'DD.MM.YYYY'); 

的版本> = 1.7.0使用:

parsed.isValid() 

爲<版本1.7.0創建自己的isValid()函數:

function isValid(parsed) { 
    return (parsed.format() != 'Invalid date'); 
}  

檢出文檔: http://momentjs.com/docs/#/parsing/is-valid/