Newsgroup: it.comp.lang.javascript
Titolo: Monitirare caratteri

Ciao ragazzi, e' la prima volta che scrivo su questo NG, e premetto che mi
sto' avvicinando pian piano a javascript e all'html.
Il mio problema e' il seguente:
devo creare una pagina html che fra le altre cose ha un campo <input....>
all'interno di un form, nel quale l'utente deve inserire una stringa che sia
ore:minuti (hh:mm ossia ad es 16:55). La mia intenzione e' fare in modo che
ogni qualvolta venga digitato un carattere diverso da un numero e da due
punti, il campo venga cancellato e il cursore rimesso nella posizione
iniziale.
Ho provato a smanettare e sono riuscito tramite l'attributo onKeyUp del tag
input e attraverso il monitoraggio  dell event.keyCode tramite javascript, a
far si che vengano accettati solo i numeri. Il problema lo ho con i due
punti: se accetto il keycode 58 corrispondente ai due punti, non
funziona.....sara' perche' per scrivere i due punti si deve premere
contemporaneamente il tasto shift??? Ho provato tollerando anche il keycode
16 corrispondente a shift, ma senza risultati.Chiedo aiuto per risolvere il
problema.
La cosa migliore sarebbe che la soluzione funzionasse tramite switch anche
con netscape per unix/linux. Spero di essere stato abbastanza chiaro (ne
dubito :-))
Grazie a tutti e di nuovo ciaoooo.

 iniziale.
MMmmm, non so la soluzione, ma ti propongo un metodo alternativo: perché non
metti DUE campi invece di uno? uno per i minuti e uno per le ore. Li fai
lunghi al massimo 2 caratteri (o più, dipende a cosa ti serve) e controlli
che siano numerici. Poi che in mezzo ci vadano i due punti lo sai e non
forzi l'utente a farlo...
My 0,02?
Leo.

 iniziale.
Devi quindi verificare un'ora? Prova questa regexp:
<script>
var ora="11:55";
if (ora.match(/^(([0]?[1-9]|1[0-2])(:)([0-5][0-9]))$/)) {
	alert("ok, ora esatta");
} else {
	alert("no, ora sbagliata");
}
</script>
Al posto della var ora ti basta indicare il modulo che vuoi validare e 
fare la verificare all'onsubmit (con un return false ovviamente).
-- 
Have a nice day. Ro!
http://www.risorse.net

 Devi quindi verificare un'ora? Prova questa regexp:
Grazie per i consigli, ma ame interessava un controllo in tempo reale, senza
dover premere un tasto e senza la comparsa di alert :-((
Di nuovo e ciao.

 fare la verificare all'onsubmit (con un return false ovviamente).
Ciao Ro!,
torno alla carica.
Ho seguito il tuo consiglio, apportando alcune piccole modifiche:
tenedo presente che il formato e' hh:mm
ho aggiunto il supporto alle 24 ore (0-23), le ore 0-9 sono supportate
senza zero davanti (5:34), i minuti
0-9 sono supportati senza zero davanti (12:5), se i minuti sono 0 si
puo' inserire solamente l'ora (12:00 -> 12).
Ecco il codice, dove ora e' il value del tag input:
function controlTime(ora) {
var regExp =
/^(([0-9]|[0-1][0-9]|2[0-3])([:][0-9]|[:][0-5][0-9]){0,1})$/;
return regExp.test(ora);
Con IE tutto OK.
Pero', perche' su Netscape ho problemi con la gestione dei minuti?
Piu' precisamente, se non li metto OK, ma se inserisco i minuti mi
restituisce false.
Ho usato {0,1} perche' pensavo fosse il punto interrogativo che creava
problemi,
ma invece non ho risolto. Come risolvo?
Grazie in anticipo per i consigli.
Ciao.
Net'sHound
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ho risolto, grazie mille comunque.
Ciao.


 Ho risolto, grazie mille comunque.
Almeno dammi il tempo di leggere il tuo msg :P
-- 
Have e nice day. Ro!
http://www.Risorse.net