Es que a diferencia de los demás navegadores, en Internet Explorer los caracteres (teclas) especiales no producen el evento onkeypress.
Creo que con esto ya se contempla todos los casos:
Código javascript
:
Ver originalfunction solonumeros(evt){
var key = evt.keyCode || evt.which;
alert(key);
return ((key > 47 && key < 58) || key < 14 || key == 46 || (key > 36 && key < 41));
}