2012-05-23 43 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/