Jump to content


Photo

Substituir Palavra Tirando Acento


  • Faça o login para participar
19 replies to this topic

#1 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 14/07/2008, 13:56

Olá,

Estou usando o replace para substituir a string, tirando acento e espaços em branco, segue abaixo o código:

function seoString(palavra)
{
	var string = palavra;
	for (i=0;i<string.length-1;i++)
	{
	// Removendo acento
	string = string.replace(/[âáàã]/,"a");
	string = string.replace(/[éèê]/,"e");
	string = string.replace(/[íìî]/,"i");
	string = string.replace(/[ôõóò]/,"o");
	string = string.replace(/[úùû]/,"u");
	string = string.replace("ç","c");
	string = string.replace(" ","-");	
	}
	document.getElementById("seo").value = string.toLowerCase();
}

Mas ele só subistitu o espaço em branco, os acentos não esta tirando nem o "ç", porque ? O que tem de errado galera quem puder ajudar agradeço desde já!

#2 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 14/07/2008, 16:46

Vou te dar uma dica... Muda para lowerCase antes. Pois se tiver "Á" por exemplo, ao fazer lower case antes a tua função vai corrigir ele também ;)

Outra coisa, para que o -1? Para a tua finalidade, pode remover ele.

Eu fiz uns testes aqui modificando esses pontos, e funcionou tudo OK. Veja só:

<script>

function seoString(palavra) {
	var string = palavra.toLowerCase();
	for (var x = 0;x<string.length;x++) {
	string = string.replace(/[âáàã]/,"a");
	string = string.replace(/[éèê]/,"e");
	string = string.replace(/[íìî]/,"i");
	string = string.replace(/[ôõóò]/,"o");
	string = string.replace(/[úùû]/,"u");
	string = string.replace("ç","c");
	string = string.replace(" ","-");  
	}
	
   alert(string);
	
	}
	

seoString("ôêãõéèéí çoçandó ãì?");


</script>

Edição feita por: Firehalk, 14/07/2008, 16:51.

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#3 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 14/07/2008, 17:11

Firehalk, brigadão pela ajuda man, mas ta dando na mesma, o code não mexi praticamente em nada
function seoString(palavra)
{
	var string = palavra.toLowerCase();
	
	for (var x = 0;x<string.length;x++) {
	string = string.replace(/[âáàã]/,"a");
	string = string.replace(/[éèê]/,"e");
	string = string.replace(/[íìî]/,"i");
	string = string.replace(/[ôõóò]/,"o");
	string = string.replace(/[úùû]/,"u");
	string = string.replace("ç","c");
	string = string.replace(" ","-");  
	}
	document.getElementById("seo").value = string;
}

O seguinte ele só ta funcionando o ultimo replace, apenas a linha

string = string.replace(" ","-");

Meu to tentando alterar aqui se conseguir o resultado posto, se puder me ajudar agradeço, vlw!

#4 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 14/07/2008, 18:38

Me diz uma coisa... O retorno dessa função vai ser dentro de um input ou de uma DIV??

Se for dentro de DIV, tá aqui o erro:

document.getElementById("seo").value = string;

Não se usa value mas sim innerHTML para as divs:

document.getElementById("seo").innerHTML = string;

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#5 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 14/07/2008, 20:29

Firehalk, é dentro de um INPUT que ta com id="seo", por isto usei value, ta correto?

#6 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 15/07/2008, 06:28

Tá certo sim então. Bom... sinceramente, não sei o que pode ser, pois aqui tudo que testei tanto no IE 7/6 como FF funcionaram (no Opera/Safari não pude testar porque tô sem eles no momento). Experimenta salvar esse código e rodar:

<html>
<head>
<script>

function seoString(palavra) {
	var string = palavra.toLowerCase();
	for (var x = 0;x<string.length;x++) {
	string = string.replace(/[âáàã]/,"a");
	string = string.replace(/[éèê]/,"e");
	string = string.replace(/[íìî]/,"i");
	string = string.replace(/[ôõóò]/,"o");
	string = string.replace(/[úùû]/,"u");
	string = string.replace("ç","c");
	string = string.replace(" ","-");  
	}
	
	document.forms['meu_form'].elements['seo'].value = string;
	
	}
	

</script>
</head>
<body>

<form name="meu_form">
<input type="text" name="seo" id="seo"></input><br/>
<input type="submit" value="Enviar" />
</form>

<script>
seoString("ôêãõéèéí çoçandó ãì?");
</script>

</body>
</html>

A única diferença é que usei outro maneira para chegar até o input. Ao invés de usar getElementById eu naveguei pela árvore da página, acessando o meu formulário (meu_form) e depois o elemento seo. De repente assim funciona aí, apesar de que da maneira antiga aqui funcionou de qualquer forma.
BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#7 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 15/07/2008, 07:07

Qual navegador? Algum erro ou só não dá o replace?
No replace para os acentos você está usando uma expressão regular, então é possível usar as opções para pesquisa na string, como o g (global, procura em toda string) e o i (ignora a diferença entre minúscula e maiúscula). Com isso não é preciso esse for.
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador

#8 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 15/07/2008, 09:19

Tava usando o Firefox, como sempree testando no IE7/IE6, vou testar o código se der certo, volto pra avisar, desde já agradeço a ajuda de todos!

//-- Editando - Após testes

Firehalk, tetei seu código funciona perfeitamente, mas o tentei adptar e ainda não funciona acho que pode ser por estar usadno onKeyUp ?

O JS:
function seoString(palavra)
{
	var string = palavra.toLowerCase();
	for (var x = 0;x<string.length;x++)
	{
		string = string.replace(/[âáàã]/,"a");
		string = string.replace(/[éèê]/,"e");
		string = string.replace(/[íìî]/,"i");
		string = string.replace(/[ôõóò]/,"o");
		string = string.replace(/[úùû]/,"u");
		string = string.replace("ç","c");
		string = string.replace(" ","-");  
	}
	document.forms[0].elements['seo'].value = string;
}
Obs: Usei forms[0] porque cada form tem um nome e to usando essa função pra varias páginas.

Da uma olhada no meu HTML:
<form name="add_vcsabia" action="" method="post">
		<label>Nome:</label><input type="text" name="nome" onKeyUp="seoString(this.value);">
		<label>Seo:</label><input type="text" name="seo" id="seo">
</form>
Então ele aparece perfeito, o valor em minúsculo no input seo, ele substitui os espaços em branco por "-", mas o "ç" e os acentos não funcionam, ja to ficando cabreiro... haha, vlw ve se tu consegue :)

Edição feita por: corvox, 15/07/2008, 10:12.


#9 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 16/07/2008, 17:14

Hmmm aqui tá funcionando perfeitamente no IE7/IE6/Firefox 3. Não sei o que pode ser :huh:
BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#10 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 17/07/2008, 10:49

Tu testou com o onkeyup ?

#11 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 17/07/2008, 11:24

Testei aqui do jeitinho que você postou e funcionou normal.
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador

#12 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 19/07/2008, 23:36

Caramba, vou testar de novo então, vlw abs.

#13 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 25/09/2017, 00:42

Amoxicillin And Side Effects Cialis Canada cialis Cialis Se Puede Comprar Buy Now Doxycycline Viagra Libyen

#14 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 07/10/2017, 16:11

Cafergot Available In Canada buy vardenafil online cheap Colospa Give Cat Amoxicillin Zithromax Suspension Dosage
Sale Doxycycline Low Price online pharmacy Levaquin 500mg Cephalexin 500mg Amoxicillin Clavulanic Acid Dogs Acheter Lioresal En Canada

#15 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 18/10/2017, 21:13

Comment Se Procurer Du Viagra Sans Ordonnance Cialis For Sale Online Clomid 100mg Posologie viagra Amoxicillin Isde Effects Buying Clobetasol Tablets Amex Overnight Shipping Amoxicillin Combined With Doxycycline
Buy Viagra Online In The United States Cheapest Price On Cialis viagra Amoxil Pharmacie Mexicain Cialis En Suisse Pas Cher Propecia Dosage Permanent
Kamagra Hair Loss Medrol 4 Kopen levitra vs viagra vs cialis Celebrex Discount Card
Best Place To Buy Viagra Online Quick Ejaculation viagra online pharmacy Cialis Filmtabletten Packungsbeilage




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq