como se supone que estás usando esa validación? y que tiene de particular la tecla tab en firefox?, cuando presionas tab dentro de un campo de texto te saca del campo.
Si querés validar con un evento del teclado un float tenés que comparar contra el valor del campo de texto.
Yo uso esto
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript"> //<![CDATA[
var textoactual = "";
function validar(campo,e){
var elcampo = document.getElementById(campo);
e = (e) ? e : ((event) ? event : null);
var version = (e.target) ? e.target : ((e.srcElement)?e.srcElement : null );
var teclaNum = e.keyCode;
if(teclaNum !== 9){
if((!validarNumero(elcampo.value))||(elcampo.value == "")){
if(teclaNum !== 8){
elcampo.value = textoactual;
}
elcampo.focus();
}else{
textoactual = document.getElementById(campo).value;
} // fin valida num
} // fin detectar tecla
} // fin función
function validarNumero(input){
return (!isNaN(input)&&parseInt(input)==input)||(!isNaN(input)&&parseFloat(input)==input);
}
//]]>
<input type="text" id="precio" name="precio" value="" onkeyup="validar(this.id,event);" /><br />
Saludos