почему бы просто не проверить символ, нажатый на событии "onKeyDown"?
<textarea id="foo"></textarea>
<script>
document.getElementById('foo').onkeydown = validate;
function validate(){
var evtobj = window.event? event : e; // IE event or normal event
var unicode = evtobj.charCode? evtobj.charCode : evtobj.keyCode;
var actualkey = String.fromCharCode(unicode);
]
return (/^[A-zÑñ0-9]*$/i).test(actualKey);
</script>
Это просто возвращает нажатую клавишу, и, если она действительна, возвращает true, в противном случае false, это, в терминах, определяет, действительно ли клавиша записана в текстовой области или нет