Problema com eventos javascript(onkeyup, onkeypress e onkeydown)

Dentro do meu formulario existe o seguinte codigo:

function mascara(o,f){
v_obj=o
v_fun=f
setTimeout(“execmascara()”,1)
}

function execmascara(){
v_obj.value=v_fun(v_obj.value)
}

function soLetrasNumeros(v){
return v.replace(/[^A-Za-z0-9_]/,"")
}

O problema acontece quando o texto digitado excede o tamanho do campo (size = 30), o cursor nao acompanha o texto como deveria, ele volta para o inicio da caixa de texto. Ja testei com outra funcao que so passa o conteudo do campo para maiusculo e o problema tbem acontece.

Alguem ja se deparou com este problema?

[]'s Juliana