Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Khrys

[Resolvido] Posicionamento do cursor em script para remover acent

Recommended Posts

Bom dia Pessoal,

 

Venho aqui solicitar um auxílio de vocês. A parada é a seguinte:

 

Esse código funciona muito bem para retirar acentos, e estou usando com o evento onKeyPress

 

	function retiraAcento(obj)
{
	palavra = String.fromCharCode(event.keyCode);

	var caracteresInvalidos = 'àèìòùâêîôûäëïöüáéíóúãõçÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÁÉÍÓÚÃÕÇ';
	var caracteresValidos =   'aeiouaeiouaeiouaeiouaocAEIOUAEIOUAEIOUAEIOUAOC';
	var acento = "´`^¨~";

		if(acento.indexOf(palavra)!= -1)
		{
			window.event.keyCode = 0;
		}

		if (caracteresInvalidos.indexOf(palavra) == -1) 
		{
			if (caracteresValidos.indexOf(palavra) != -1)
			{
				window.event.keyCode = 0;
				obj.value = obj.value + palavra;
			}
		} 

		else 

		{
			window.event.keyCode = 0;
			nova = caracteresValidos.charAt(caracteresInvalidos.indexOf(palavra));
			obj.value =  obj.value + nova;
		}
}

 

Só que se eu posicionar o cursor no meio da palavra, por exemplo, e digitar alguma letra, ela vai para o final da palavra. Alguém poderia me auxiliar a identificar onde o código está fazendo isso?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu não conseguir assim identificar teu problema, mais eu uso essa função:

 

<script type="text/javascript">
function retirarAcento(objResp) {
var varString = new String(objResp.value);
var stringAcentos = new String('àâêôûãõáéíóúçüÀÂÊÔÛÃÕÁÉÍÓÚÇÜ');
var stringSemAcento = new String('aaeouaoaeioucuAAEOUAOAEIOUCU');

var i = new Number();
var j = new Number();
var cString = new String();
var varRes = '';

for (i = 0; i < varString.length; i++) {
cString = varString.substring(i, i + 1);
for (j = 0; j < stringAcentos.length; j++) {
if (stringAcentos.substring(j, j + 1) == cString){
cString = stringSemAcento.substring(j, j + 1);
}
}
varRes += cString;
}
objResp.value = varRes;
}
</script>

 

<form>
<input type="text" name="Teste" onKeyPress="javascript:retirarAcento(this);">
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Ted,

 

Bem, a situação do script que publiquei é, por exemplo, na caixa de texto você digita "predio", ele vai tira a acento na boa. Mas se tipo eu quiser digitar "presidio", colocando o cursor antes da letra 'd' e digitando 'si' o resultado será "prediosi" porque não importa onde eu coloque o cursor, ele sempre vai para o fim da palavra.

 

A diferença desse script que coloquei é que ele faz a retirada do acento 'live', o seu depende do próximo input. Aí caso digite "andré" e ao invés de apertar <enter> o usuário clique no botão "enviar" o acento não é removido.

 

No seu script aconteceu a mesma coisa com o lance do cursor. Teste aí quando for oportuno... Valeus.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, obrigado pela ajuda... não consegui resolver isso pelo javascript então tratei pelo ASP mesmo... ficou até melhor, assim o usuário não vê que o acento saiu da palavra, e posteriormente o código retira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.