HighDots Forums  

format in javascript

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss format in javascript in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Andrea
 
Posts: n/a

Default format in javascript - 10-14-2003 , 03:25 AM






Buona giornata a tutti,
ho questo problema e mi sto incartando....

Sto editando su una textbox ed associato ho un determinato formato da
rispettare.
Se ad esempio il formato è '##99aa' l'utente può inserire per i primi due
caratteri solo cifre o lettere, per il 3° e 4° carattere solo cifre e per
gli ultimi due solo lettere. Una FORMAT in sostanza. Se l'utente sbaglia,
vorrei anche cancellare il carattere scritto.

Solo che la maschera di input la pesco da un database e quindi cambia in
base al TEXT INPUT dove l'utente sta scrivendo. In pratica vorrei realizzare
una funzione dinamica.


Io l'ho definita così:

onkeyup="return f_mask_edit(this.value,event.keyCode,'##aa99');"

e poi all'interno della funzione ho fatto un ciclo per sapere a che punto si
trova e se non va bene
elimino.....ma non funziona.

function f_mask_edit(valore,carattere,maschera)
{
var elemento;
var i = 0;
while (i<maschera.length)
{
if (i == valore.length-1)
{
alert('maschera1 ' + maschera.substr(i,1));
break;
}
i++;
}
if ((maschera.substr(i,1)=='#')&& ( ( ((carattere<48) || (carattere>57))
&& ((carattere<65) || (carattere>90)) && ((carattere<97) ||
(carattere>122)) ) ) ) { alert('Attenzione. Inserire una cifra
od una lettera.'); valore = valore.substr(0,valore.length-1); return
false; }
else if ((maschera.substr(i,1)=='9')&&((carattere<48) ||
(carattere>57)))
{ alert('Attenzione. Inserire una cifra.'); valore =
valore.substr(0,valore.length-1); return false; }
else if ((maschera.substr(i,1)=='a')&&((((carattere<65) ||
(carattere>90)) && ((carattere<97) || (carattere>122)))))
{ alert('Attenzione. Inserire una cifra od una lettera.'); valore =
valore.substr(0,valore.length-1); return false; }
return true;
}



Reply With Quote
  #2  
Old   
artemis.alpeia
 
Posts: n/a

Default Re: format in javascript - 10-14-2003 , 03:42 AM






Il 14 Ott 2003, 09:25, "Andrea" <andreagodioli (AT) hotmail (DOT) com> ha scritto:
Quote:
Buona giornata a tutti,
ho questo problema e mi sto incartando....

Sto editando su una textbox ed associato ho un determinato formato da
rispettare.
Se ad esempio il formato è '##99aa' l'utente può inserire per i primi due
caratteri solo cifre o lettere, per il 3° e 4° carattere solo cifre e per
gli ultimi due solo lettere. Una FORMAT in sostanza. Se l'utente sbaglia,
vorrei anche cancellare il carattere scritto.

Solo che la maschera di input la pesco da un database e quindi cambia in
base al TEXT INPUT dove l'utente sta scrivendo. In pratica vorrei
realizzare
una funzione dinamica.


Io l'ho definita così:

onkeyup="return f_mask_edit(this.value,event.keyCode,'##aa99');"

e poi all'interno della funzione ho fatto un ciclo per sapere a che punto
si
trova e se non va bene
elimino.....ma non funziona.

function f_mask_edit(valore,carattere,maschera)
{
var elemento;
var i = 0;
while (i<maschera.length)
{
if (i == valore.length-1)
{
alert('maschera1 ' + maschera.substr(i,1));
break;
}
i++;
}
anzitutto una osservazione sull'approccio: quello che ti interessa e'
l'ultimo carattere digitato, se va bene passa, altrimenti segnali l'errore.
i precedenti si suppone siano gia' corretti.

io implementerei la cosa con le espressioni regolari, e farei piu' o meno
cosi':

<input type="text" name="foo" onkeyup="verifyMask(this, '##aa99');" />

function verifyMask(text, mask)
{
var val = text.value,
len = val.length,
pos = len - 1,
chr = val.charAt(pos),
msk = mask.charAt(pos),
reg,
msg;
if (len > mask.length)
{
alert('Dimensione massima superata');
text.value = text.value.substring(0, mask.length);
}
switch (msk)
{
case '#': reg = /[a-zA-Z0-9]/; msg = 'una lettera o un numero'; break;
case '9': reg = /[0-9]/; msg = 'un numero'; break;
case 'a': reg = /[a-zA-Z]/; msg = 'una lettera';
}
if (!chr.match(reg))
{
alert('Errore nell\'inserimento: in questa posizione puoi inserire soltanto
' + msg);
text.value = text.value.substring(0, pos);
}
}

--
artemis.alpeia

--------------------------------
Inviato via http://arianna.libero.it/usenet/


Reply With Quote
  #3  
Old   
Andrea
 
Posts: n/a

Default Re: format in javascript - 10-14-2003 , 04:18 AM



Il mio non funzionava perchè mi ero incartato con le OR e AND......(ora
funziona)
ma devo dire che la tua soluzione è decisamente migliore....
mille grazie!!!
Ciao ciao.
Andrea.



Reply With Quote
  #4  
Old   
Andrea
 
Posts: n/a

Default Re: format in javascript - 10-14-2003 , 04:30 AM



Effettivamente però se torno all'inizio del text, cancello un carattere e lo
sostituisco con uno che non va bene non segnala l'errore.
Ora guardo se riesco a superare questo intoppo.
Ciao.
Andrea.



Reply With Quote
  #5  
Old   
Andrea
 
Posts: n/a

Default Re: format in javascript - 10-14-2003 , 04:49 AM



Cazzarola un altro errore....stranissimo...
se devo inseire una cifra e digito velocemente due lettere nella seconda dà
l'errore (alert) ma la prima l'accetta.

Andrea.



Reply With Quote
  #6  
Old   
artemis.alpeia
 
Posts: n/a

Default Re: format in javascript - 10-14-2003 , 06:57 AM



Il 14 Ott 2003, 10:49, "Andrea" <andreagodioli (AT) hotmail (DOT) com> ha scritto:
Quote:
Cazzarola un altro errore....stranissimo...
se devo inseire una cifra e digito velocemente due lettere nella seconda

l'errore (alert) ma la prima l'accetta.
questo e' dovuto all'asincronicita' della chiamata del metodo e della
compilazione del campo da tastiera, potresti cercare di velocizzare la
routine sfoltendo un po' di cose superflue, il tuo primo errore invece penso
dipenda dal backspace, che va trattato a parte.

--
artemis.alpeia

--------------------------------
Inviato via http://arianna.libero.it/usenet/


Reply With Quote
  #7  
Old   
Gianfranco Carlotti
 
Posts: n/a

Default Re: Re: format in javascript (was: Re: format in javascript) - 10-14-2003 , 07:14 AM



On Tue, 14 Oct 2003 10:49:05 +0200, Andrea wrote:

Quote:
Cazzarola un altro errore....stranissimo...
se devo inseire una cifra e digito velocemente due lettere nella seconda dà
l'errore (alert) ma la prima l'accetta.

Andrea.
Senza l' alert() funziona, trova un altro modo per informare l' utente.

--
[web] www.gfcarlotti.it
www.gfcarlotti.it/trekking/
[mail] gianfranco (AT) gfcarlotti (DOT) it
[pgp] www.gfcarlotti.it/pgp/franco.asc


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.