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; }
}
}