2012-05-23 10 views
5

MomentJS è inteso per l'analisi di input dell'utente?MomentJS - Destinato alla convalida dell'input?

Mi sono avvicinato moderatamente ai casi facili, accettando le date nell'ordine GGMMAAAA e gestendo alcune variazioni.

Non gestisce particolarmente le date non valide quando si specifica il formato - Includendo valori di giorno troppo alti o valori di anno di commutazione tra 2 e 4 cifre.

Esempi di interpretazione dell'anno:

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

esempi di ciò che si spera essere date non valide:

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 

ho creato un JS Fiddle con questi esempi: http://jsfiddle.net/cHRfg/2/

C'è un modo per avere il momento di accettare una più ampia gamma di input dell'utente e rifiutare le date non valide? O la biblioteca non è destinata a questo?

risposta

5

È possibile provare l'analisi di più formati. violino Aggiornato: http://jsfiddle.net/timrwood/cHRfg/3/

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

Qui ci sono i documenti rilevanti. http://momentjs.com/docs/#/parsing/string-formats/

È in corso l'aggiunta di moment.fn.isValid che consente di eseguire la convalida come negli esempi 5-8. Sarà aggiunto nella versione 1.7.0. https://github.com/timrwood/moment/pull/306

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

per la versione> = 1.7.0 uso:

parsed.isValid() 

per la versione 1.7.0 < creare il proprio) Funzione isValid (:

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

checkout la documentazione: http://momentjs.com/docs/#/parsing/is-valid/

Problemi correlati