Tal vez deberías de dejar que el usuario escriba sus datos como quiera, y utilizar la función blur para traducir la cadena a mayúsculas y sustituir los hacentos.
Código HTML:
Ver original<input name="nombre" type="text" id="nombre" size="45" maxlength="48" onblur="validar();"/>
Código Javascript
:
Ver originalfunction validar(){
//guardamos el valor del input en la variable cadena1
var cadena1 = document.getElementById('nombre').value;
//transformamos la cadena a mayuscula
cadena2 = srtreplace('','') // aquí tienes que investigar como remplazar los caracteres ó buscar una función la cual no recuerdo, pero creo que hay una que se llama toUpper() para cambiar a mayúsculas
//unavez procesada la cadena regresamos el valor al input
document.getElementById('nombre').value = cadena2;
}
Más o menos así, espero sirva de algo.