¿por qué debe ser mayúsculas solamente? Quizás te valga lo mismo recibirlo de la forma que sea y transformarlo del lado del servidor.
La sugerencia de quimfv me parece apropiada, la transformación se haría al salir del campo de texto.
Si querés jugar con el evento onkeypress creo que lograrías el mismo efecto de no poder desplazarte por el texto.
Hay formas de restringir los caracteres posibles, con el efecto de que solamente permites ingresar caracteres en mayúsculas. Pero me parece una molestia innecesaria para los usuarios del sistema (allá tú si decidís implementarla):
http://www.rgagnon.com/jsdetails/js-0084.html
Saludos.