Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi gente, boa tarde.
Tenho uma mascara que permite que um campo input tenha somente letras, numeros e espaços.. porém quando alguém tenta digitar um caracter invalido, o cursor aponta para o final do campo.. vou postar meu código:
<script>
function mascara(o,f){
v_obj=o;
v_fun=f;
setTimeout("execmascara()",1);}
function execmascara(){ v_obj.value=v_fun(v_obj.value);}
function alphanum(v){v=v.replace(/[^a-zA-Z0-9" "]/g,"");
return v;
}
</script>
<input name="nome" type="text" id="nome" value="Dani Carla" onKeyUp="mascara(this,alphanum)" />
Não quero fazer usando jquery e nem pattern do html5Vou fazer essa alteração...
Como faço para permitir hifen com regex?
Então @danicarla desconheço uma forma de detectar o exato local com eficiência onde está o cursor entro de um input text. Uma vez que a pessoa pode está lá em tal caractere e clicar no início.
Enfim quando se usa o replace na verdade o javascript reinscreve todo o conteúdo do input e não a chave atual por isso o cursor sempre vai para o final quando a função é ativada.
Então desconheço uma forma de manter-lo na última chave inserida mesmo que ela não seja a última do total de chaves.
Olhando o exemplo que mostrou e me parece que funciona bem só posso citar algumas coisas para modificar:
A expressão usaria assim: replace(/[^a-zA-Z À-ú 0-9]/g, "");
Assim sendo qualquer caractere que não seja alfabético é recusado, porque da forma que você fez letras acentuadas não passarão pela expressão.
Também mudaria a forma de ativação da função de onKeyUp para onkeypress.