Yo sigo opinando que es mejor usar el onkeypress y cancelar la acción del evento. Porque de la forma como propones,
Legoltaz, si te sitúas en el medio y escribes los caracteres no permitidos se borra el resto de la cadena, podría solucionarse concatenando el resto del contenido, pero nuevamente habría que posicionar el cursor a su lugar correcto, o sea, mucho trabajo

.
EDITO: Además de lo que comentó
buzu (hola

), otro choque en el día

.