L'esigenza di validare moltissimi campi di input mi ha fatto cercare in giro per la rete soluzioni quali: Dojo, MooTools, Spry e molti altri Framework JavaScript. Ma tutti questi Framework a parte Spry non forniscono soluzioni adeguate alle mie esigenze. Come ad esempio la validazione dei campi data con il formato: 02-03-2008. Oltre alla validazione dei campi di input sarebbe comodo anche il supporto alla compilazione dei campi. Ad esempio quando si deve inserire una data in formato dd-mm-yyyy se viene inserito tale pattern "1-3-4", in automatico il pattern si dovrebbe trasformare in "10-03-2004". Quest'ultima caratteristica è stata ispirata dal sistema di compilazione dei campi data presente in Microsoft Excel. Anche perché in molti progetti software si prevede nella compilazione di moduli l'inserimento di molte date ed è spesso necessario semplificare il più possibile la compilazione agli utenti utilizzatori.
Progetto
Nel Software Microsoft Exel, è facile notare come l'inserimento di dati nelle celle di Exel risulti fortemente assistito. Si provi ad inserire in una cella formato Data la seguente stringa "1-3-4", verrà immediatamente formattata nel modo giusto. Lo scopo di questo progetto é proprio questo.
Altri scopi di questo progetto sono:
Rendere di facile implementazione la libreria in progetti già esistenti, rendendo il meno invasivo possibile il codice. Infatti per aggiungere il controllo di validazione basta aggiungere pochi attributi in più al TAG Input:
Evolvibile: una buona documentazione e buon codice;
Rendere facile la modifica del codice per aggiungere nuovi formati di input per la validazione.
Il progetto viene rilasciato sotto licenza GPL 2 e qualsiasi forma di collaborazione allo sviluppo è ben gradita.
L'algoritmo di gestione degli eventi e della validazione implementa una Petri Net (vedi fig.) che modella l'uso comune di un campo di input.
Funzionamento Generale
Al aricamento completo del codice della pagina HTML corrisponde la chiamata all'evento body.onload, che coincide con la chiamata alla funzione init(). Questa funzione parsa tutto in documento HTML e quando trova tag INPUT con l'attributo CHECK si ferma e aggiunge a questi campi un evento FOCUS che quando si attiva, chiama una funzione comune a tutti i campi per la gestione della validazione.
Facciamo ora riferimento allesempio riportato sopra. Il gestore della validazione è in grado di capire che tipo di dato deve validare attraverso l'attributo CHECK del TAG INPUT, che tipo di esempio deve visualizzare dall'attributo EXAMPLE e il formato della data dall'attributo FORMAT.
DEMO
Esempio: prova ad inserire nel campo data solo un numero