Newsgroup: it.comp.lang.javascript
Titolo: funzione generalizzata per filtrare i tasti

se qualche anima pia ha 2 sec.. :)
stavo tentando di fare una funzioncina da usare sempre per filtrare i 
dati inseriti nelle text... ma mi da 2 milioni di errori..
e alla fine sto' per rinunciarci..
<input type="text" onkeydown="FiltraKey('numeri',event);">
function FiltraKey(typeFilter,e)
{
Filter = typeFilter.toLowerCase();
// Gecko riceve l'evento come parametro in e
var ev=e?e:event;
// IE valorizza l'obj event
var keyPressed=ev.charCode?ev.charCode:ev.keyCode; // IE non ha charCode
// variabile che verifica se ci sono errori
var keyOut = false ;
switch (Filter)
{
case 'numeri':
if ( !( keyPressed<=47 || (keyPressed>=48 && keyPressed<=57) || 
(keyPressed>=96 && keyPressed<=105) ) )
{
keyOut = true ;
alert ("Attenzione puoi inserire solo i caratteri\n1234567890");
}
break;
case 'tel':
if ( !( keyPressed<=47 || keyPressed==109 || keyPressed==189 || 
(keyPressed>=48 && keyPressed<=57) || (keyPressed>=96 && 
keyPressed<=105) ) )
{
keyOut = true ;
alert ("Attenzione il formato di un 
n.ro
 di telefonico deve 
essere\n####-#######");
}
break;
case 'data':
if ( !( keyPressed<=47 || keyPressed==55 || keyPressed==111 || 
(keyPressed>=48 && keyPressed<=57) || (keyPressed>=96 && 
keyPressed<=105) ) )
{
keyOut = true ;
alert ("Attenzione il formato della data deve essere\n##/##/####");
}
break;
case 'valuta':
if ( !( keyPressed<=47 || (keyPressed>=48 && keyPressed<=57) || 
(keyPressed>=96 && keyPressed<=105) || keyPressed==190 || keyPressed==110 ))
{
keyOut = true ;
alert ("Attenzione puoi inserire solo i caratteri\n1234567890 ed il . 
per i decimali.");
}
break;
default:
alert ("Tipo di filtro non riconosciuto");
break;
}
// pressione di tasto non consentito
if (keyOut)
{
// Gecko usa preventDefault // IE usa returnValue
if	(ev.preventDefault) { e.preventDefault(); }
else if('returnValue' in ev ) { ev.returnValue=false; }
}
}


Posta questi 2 milioni di errori, a me la console di Firefox non
ritorna
nessun errore, eccezion fatta per
"Errore: [Exception... "'Permesso negato per impostare la proprietà
XULElement.selectedIndex' when calling method:
[nsIAutoCompletePopup::selectedIndex]"  nsresult: "0x8057001e
(NS_ERROR_XPC_JS_THREW_STRING)"  location: "JS frame ::
file:///D:/Lavori%20Iniziati/filtra_tasti.html :: FiltraKey :: line 22"
 data: no]
File sorgente: file:///D:/Lavori%20Iniziati/filtra_tasti.html
Riga: 22"
Su IE6 nessun problema, certo bisogna però vedere quali sono i tuoi
obiettivi.
Devi controllare che l'utente inserisca valori numerici, nello
specifico una data?
Però col tuo codice io posso inserire anche caratteri come !"£$%&()=
che con
le date non hanno nulla a che fare.
Consiglio: usa le espressioni regolari, risparmi tempo e righe di
codice, in più guadagni in precisione ed affidabilità.

 codice, in più guadagni in precisione ed affidabilità.
mi potresti spiegare meglio il consiglio? :)
non ho capito bene che intendi!!
grazie, ciau
simple_maL

 riferisca)...
http://groups.google.it/group/it.comp.lang.javascript/msg/2c18637572957018
-- 
"E' un vero peccato che tutte le persone che sanno come far funzionare 
il Paese siano troppo occupate a guidare taxi o a tagliare capelli."
(George Burns)

 simple_maL
per le operazioni sulle stringhe le Regular Expression sono
il metodo più potente; non sono una prerogativa di Javascript,
esistono per Perl, per PHP, per C... La sintassi più o meno è
identica, comincia informati qui:
http://web.tiscali.it/alexmfm/reg_exp.html
http://www.lukeonweb.net/leggi.asp?id=438
http://www.jsdir.com/tutorials/cfregexp.asp?page=0
raenkrus

 
http://www.jsdir.com/tutorials/cfregexp.asp?page=0
grazie per il suggerimento, ho verificato un po', ma nn penso sia la 
soluzione che cerco... io vorrei proprio inibire la possibilità di usare 
  caratteri non attesi per una determinata text...
sto' ancora cercando una soluzione..
grazie cmq..
ciao
maL

 maL
prego.
raenkrus

 [OT]sto va senza accento ;-) [/OT]
:) stavo tentando le RegExp :)
simple_maL