Buf, creo que te convendría separar el código del html, porque es algo largo, y es un poco dificil escribir código lejible en una sola línea.
Además el código para permitir escribir sólo números sólo funciona en IE, te lo he tocado para que sea más estándar:
Código:
<input type="text" maxlength="2" name="txt_prommat7" size="3" tabindex="17" onblur="f_blur(this)" onkeypress="f_keypress(event)" onFocus="siguienteCampo ='txt_promgral7'; "/>
<script type="text/javascript">
function f_blur(caja) {
if(caja.value.indexOf('.') == -1)
caja.value = caja.value.split('').join('.');
// ¿la coloreamos?
if ( parseInt(caja.value.replace(/\./,"")) < 40 )
caja.style.color = "red";
else
caja.style.color = "black";
}
function f_keypress(e) {
var tecla = (document.all) ? e.keyCode : e.which;
if (tecla==8) return true;
return /d/.test( String.fromCharCode(tecla) );
}
</script>
No te funcionaba más que nada por la condicional:
parseInt(this.value) < 40
que mira si el valor convertido a número es menor a 40. Habría que convertirlo a número y mirar a ver si es menor de 4.0 o sino quitarle el punto, como lo he hecho en el script.
Espero que sea lo que buscas.
Un saludo.