El siguiente código permite la entrada de números enteros y 2 decimales, tiene una adaptación para obtener la tecla presionada para distintos navegadores, la línea comentada era la anterior, estaba andando el ejemplo pero no en Firefox, por esta razón probé una sugerencia del foro, pero la variable evento_key me la muestra como undefined (véase la línea con ALERT), porqué puede ser? Le puse VAR a la izquierda pero tampoco. Mas abajo pongo la línea de input.
Código:
function fieldNumber (objeto , deci) { evento_key = (document.all) ? objeto.keyCode : objeto.which; alert(evento_key); // var evento_key = window.event.keyCode; var valorCampo; var numPosPunto = 0; var strParteEntera = ""; var strParteDecimal = ""; var NUM_DECIMALES = deci; switch (evento_key) { case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 46: break; default: window.event.keyCode = 0; return false; } valorCampo = objeto.value; if (evento_key == 46) { if (deci == 0) { window.event.keyCode = 0; return false; } } if (evento_key == 46) if (valorCampo.indexOf(".") != -1) { window.event.keyCode = 0; return false; } /* Sَlo puede teclear el nْmero de decimales indicado en NUM_DECIMALES */ if ((numPosPunto = valorCampo.indexOf(".")) != -1) { strParteEntera = valorCampo.substr(0,(numPosPunto - 1)); strParteDecimal = valorCampo.substr((numPosPunto + 1), valorCampo.length) if (strParteDecimal.length > (NUM_DECIMALES - 1)) { window.event.keyCode = 0; return false; } } return true; }
HTML
Probé sin RETURN y no funciona nada.
Código:
<input name="defecto" onKeyPress="return fieldNumber(this,2)" type="text" size="10" />