Ai fini della tua applicazione riproporsi di ottenere l'effetto durante la digitazione (onkeyup) è una scelta probabilmente dovuta a una necessità estetica, ma potrebbe essere poco ponderata in termini di funzionalità: poichè in termini funzionali non solo non è necessario, ma può rivelarsi addirittura controproducente (per questo io sottolineo spesso che le cose bisogna farle quando serve, e non solo perchè si può).
I motivi sono questi:
1) un sacco di codice superfluo (con le evidenti ricadute sulla portabilità) per ottenere onkeyup quello che con una riga di codice (una singola espressione regolare!) ottieni onblur: ai fini della formattazione e della validazione onsubmit è del tutto identico.
2) è disfunzionale per l'utente, il quale specie se poco esperto può ritrovarsi piuttosto spaesato dalla cosa (non sottovalutare mai la ottusità del grande pubblico... non è tutto composto di sagaci ventenni): una espressione regolare invece che valida il tutto e eventualmente lo riadatta con i due punti mentre l'utente non ha più lì l'occhio evita di confondere l'utente, e ottiene lo scopo per te in un lampo anzichè procrastinarlo ad ogni colpo di tastiera.
3) non ti dà flessibilità: cosa accadrebbe se un domani decidi di inserirci anche i secondi, o meglio ancora se tu decidessi che anche la formulazione 5:10 è ammessa - e in quel caso ti si solleverebbe il dubbio: questo 5 sta per 05 o per 17...? Determinarlo onkeyup ti complessificherebbe enormemente la cosa, e anzi non la risolverebbe affatto questa ambiguità perchè tocca comunque o allertare l'utente o prendere una decisione arbitraria al posto suo: e tutto questo proprio mentre scrive (e che questo migliorerebbe la usabilità della applicazione è tutto da dimostrare: anzi si direbbe vero proprio il contrario).
Per cui valuta te se farlo onblur (eventualmente onsubmit con return false/true se preferisci).
Io non esiterei un istante, ma la pagina è tua e quindi anche la scelta è tua
A quel punto una qualsiasi espressione regolare che ti controlli il formato dd:dd è in grado con un banale replace di correggerti il formato e inserire i due punti laddove l'utente ha, magari (o verosimilmente), inserito un punto: 17.30 oppure di allertarlo sulla totale inidoneità dei dati immessi - tipo: 'gatto'...


Rispondi quotando