2012-05-23 2 views
5

Est-ce que MomentJS est destiné à l'analyse des entrées utilisateur?MomentJS - Destiné à la validation des entrées?

Je suis modérément proche avec les cas faciles, il accepte les dates dans l'ordre DDMMYYYY, et il gère quelques variations.

Il ne gère pas particulièrement bien les dates non valides lors de la spécification du format - Y compris les valeurs de jour trop élevées ou les valeurs de l'année de commutation entre 2 et 4 chiffres.

Exemples d'interprétation de l'année:

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'); 

Exemples de ce qui, espérons-être les dates non valides:

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 

J'ai créé un JS Fiddle avec ces exemples: http://jsfiddle.net/cHRfg/2/

Y at-il un façon d'avoir moment accepter un plus large éventail d'entrée de l'utilisateur, et rejeter les dates non valides? Ou la bibliothèque n'est-elle pas destinée à cela?

Répondre

5

Vous pouvez essayer l'analyse de plusieurs formats. violon Mise à jour: http://jsfiddle.net/timrwood/cHRfg/3/

var formats = ['DDMMYYYY', 'DDMMYY']; 
var date1 = moment('30082012', formats); 
var date4 = moment('300812', formats); 

Voici les documents pertinents. http://momentjs.com/docs/#/parsing/string-formats/

Il y a un développement sur l'ajout de moment.fn.isValid qui vous permettra de faire la validation comme dans les exemples 5-8. Il sera ajouté dans la version 1.7.0. https://github.com/timrwood/moment/pull/306

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

pour la version> = 1.7.0 utilisation:

parsed.isValid() 

pour la version 1.7.0 < créer votre propre fonction isValid():

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

Commander les docs: http://momentjs.com/docs/#/parsing/is-valid/

Questions connexes