debes de modificar para devolver true en caso de que e keycode corresponda a esas teclas:
backspace: 8
flechas: 37 38 39 40, pero ya las cubres, pero en el evento onkeypress FF devuelve 0 en tecla para ellas.
he aquí mis funciones:
Código Javascript
:
Ver originalvar _charmiles = ','; //separador de miles
var _chardecimal = '.'; //separador de la parte decimal
function inputInt(e,minus){
var menos = minus || false;
if(e==null){
e=event;
}
if(e==null){
e=window.event;
}
var tecla = (document.all) ? e.keyCode : e.which;
//48=0,57=9, 45=menos
if(tecla==8)return true;//backs
if(tecla==0 && !document.all)return true;//solo FF en keypress de flechas
if (tecla==45){
if (!menos){
return false;
}
}else if(tecla < 48 || tecla > 57){
return false;
}
return true;
}
function inputFloat(e,minus){
var menos = minus || false;
if(e==null){
e=event;
}
if(e==null){
e=window.event;
}
var tecla = (document.all) ? e.keyCode : e.which;
//48=0,57=9, 45=menos
if(tecla==0 && !document.all)return true;//solo FF en keypress de flechas
if(tecla==8)return true;//backs
if(tecla==_chardecimal.charCodeAt(0)) return true; //punto decimal
if (tecla==45){
if (!menos){
return false;
}
}else if(tecla < 48 || tecla > 57){
return false;
}
return true;
}
uso:
<input type="text" onkeypress="return inputFloat(event,true);" />