Bom dia galera!!
Tenho campos que devem ser validados com letra maiúscula e SEM ACENTUAÇÃO!
Se poderem me ajudar com relação a acentuação SERIA ÓTIMO!
Thank’s in advance!
[]'s
Bom dia galera!!
Tenho campos que devem ser validados com letra maiúscula e SEM ACENTUAÇÃO!
Se poderem me ajudar com relação a acentuação SERIA ÓTIMO!
Thank’s in advance!
[]'s
Cria uma expressão regular para verificar se o texto possui esses tipos de caracteres.
Isso… é justamente o que preciso!
PODE ME AJUDAR? =D
Vejam esse exemplo!!!
<html>
<head>
</head>
<script language="JavaScript" type="text/javascript">
function retiraAcento(obj)
{
palavra = String.fromCharCode(event.keyCode);
var caracteresInvalidos = 'àèìòùâêîôûäëïöüáéíóúãõÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÁÉÍÓÚÃÕ';
var caracteresValidos = 'aeiouaeiouaeiouaeiouaoAEIOUAEIOUAEIOUAEIOUAO';
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;
}
}
</script>
<form id="verifica" method="post" action="" >
<p>
<input type="text" name="txtlogin" id="txtlogin" onblur="javascript:retiraAcento(this);">
<input type="text" name="txtlogin" id="txtlogin" onKeyPress="javascript:retiraAcento(this);">
</p>
</form>
</html>
No evento “onKeyPress” FUNCIONA BELEZINHA… já o “onBlur” não!
Se o usuário der um Crtl V com palavras com acentos ELE ACEITA!!
Não conheço NADA de javascript mas da pra notar que a estrutura da function é “meio que feita para esse evento”…
Como posso fazer para validar isso, mesmo que um Crtl V seja executado???
:roll:
Bom… agora vcs tem duas alternativas:
<html>
<head>
</head>
<script language="JavaScript" type="text/javascript">
function retiraAcento(palavra,obj)
{
com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ';
sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC';
nova='';
for(i=0;i<palavra.length;i++) {
if (com_acento.search(palavra.substr(i,1))>=0) {
nova+=sem_acento.substr(com_acento.search(palavra.substr(i,1)),1);
}
else {
nova+=palavra.substr(i,1);
}
}
obj.value = nova.toUpperCase();
}
</script>
<form id="verifica" method="post" action="" >
<p>
<input type="text" name="txtlogin" id="txtlogin" onBlur="javascript:retiraAcento(this.value, this);">
<input type="text" name="txtlogin" id="txtlogin" onKeyPress="javascript:retiraAcento(this.value, this);">
</p>
</form>
</html>
Isso era o que eu realmente precisava!
Obrigado pela FORÇA de todos :XD:
Bom, aconselho vc a fazer com RegExp, pois vc cerca e não precisa fazer isso tudo, já estou providenciando um código de exemplo para vc ver como é.
muito simples…
bom, não ficou muito bom na parte de otimização, mas é melhor do que está descrito acima, observe:
<script language="JavaScript" type="text/javascript">
window.onload = function(){
$('string').onkeyup = function(){
testar_string($('string'));
}
}
function $(id){
return document.getElementById(id);
}
function testar_string(string){
palavra = new RegExp('\^(([0-9|a-zA-Z]{0,32}))\$');
(!palavra.test(string.value))?string.value = substStr(string,palavra):"";
}
function substStr(teste,regex){
c = teste.value.length;
str ="";
for(i=0; i<c ;i++){
if(regex.test(teste.value[i]))
str+=teste.value[i];
}
return str;
}
</script>
<input type='text' id='string' />
no caso, cole qualquer string que ele tira as ocorrências de elementos inválidos, visualize só.
insira qualquer caractere sequencial como áó&&,
ou cole algo : asjkldj8*%&¨ááóómais
Espero ter ajudado.
Serviu também a solução descrita por mim?
Então brother…no primeiro teste que fiz aconteceu algo mais ou menos assim dentro do input:
undefiedundefiedundefied
Sem contar que travou meu browser… e não consegui “copiar e colar” o resultado aqui pra vc ver…
O que será que ta errado???
A idéia é ótima, mas não funfou!
Testa vc, experimenta segurar a tecla “%” por alguns segundos depois solta!
Ou escreva algo “aceitável” pela function e depois digite uma tecla “inválida”, vai dar o mesmo erro!
[]'s
[quote=neeryck]Bom… agora vcs tem duas alternativas:
<html>
<head>
</head>
<script language="JavaScript" type="text/javascript">
function retiraAcento(palavra,obj)
{
com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ';
sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC';
nova='';
for(i=0;i<palavra.length;i++) {
if (com_acento.search(palavra.substr(i,1))>=0) {
nova+=sem_acento.substr(com_acento.search(palavra.substr(i,1)),1);
}
else {
nova+=palavra.substr(i,1);
}
}
obj.value = nova.toUpperCase();
}
</script>
<form id="verifica" method="post" action="" >
<p>
<input type="text" name="txtlogin" id="txtlogin" onBlur="javascript:retiraAcento(this.value, this);">
<input type="text" name="txtlogin" id="txtlogin" onKeyPress="javascript:retiraAcento(this.value, this);">
</p>
</form>
</html>
Isso era o que eu realmente precisava!
Obrigado pela FORÇA de todos :XD:[/quote]
Sinto em dizer, mas sua solução está com problemas:::::
insira o seguinte código: ADF G _ A ´[a á á ´´´´´´´
verá os problemas dela.
Brother…veja… minha necessidade agora aqui na empresa é apenas acentuação!!! NÃO PRECISO EXCLUIR @#$%… e etc!
Se vc olhar para o código vai notar que se adicionar ´`^~ nos caracteres com_acento e na outra substituir por espaço isso será eliminado tb.
ISSO EU JÁ SABIA!!
Algo mais que eu não tenha percebido no meu código?
Continuando… a dúvida parou no seu código!
CONSEGUIU RESOLVER PARA A GALERA DO GUJ VER???
[]'s
[quote=neeryck][quote=xjunior ]
Sinto em dizer, mas sua solução está com problemas:::::
insira o seguinte código: ADF G _ A ´[a á á ´´´´´´´
verá os problemas dela.
[/quote]
Brother…veja… minha necessidade agora aqui na empresa é apenas acentuação!!! NÃO PRECISO EXCLUIR @#$%… e etc!
Se vc olhar para o código vai notar que se adicionar ´`^~ nos caracteres com_acento e na outra substituir por espaço isso será eliminado tb.
ISSO EU JÁ SABIA!!
Algo mais que eu não tenha percebido no meu código?
Continuando… a dúvida parou no seu código!
CONSEGUIU RESOLVER PARA A GALERA DO GUJ VER???
[]'s[/quote]
Bom mano, é o seguinte, como não uso IE, não vi que tinha erro pro Internet Explorer (bosta do Ruwindows), aqui, bom, o objetivo não era fazer um igual e nem mesmo fazer o mesmo que vc, e sim te dar uma idéia sobre o assunto, visualizando o erro descrito e desde já agradeço pois pensei na logica em pouco tempo e não testei no IE, vou melhorar o código para esse trem do IE, mas testa no firefox ou chrome que vai visualizar o que o mesmo faz.
Bom, agradeço pelo feedBack, vou melhorar agora e resolver este problema, pois a solução é simples.
flw mano…
(caracteres especiais vc mesmo coloca a excessão pra eles, vou melhorar e colocar algumas excessões, ok)
E o ponto que coloquei é que se vc inserir algum caracter tipo { ou ´[ assim, ele para a verificação e deixa passar acentos como á ó entendeu?
num to criticando seu código não, só mostrando alguns erros (ao meu ver - as vezes é o q vc quer) que podem ser corrigidos.
:shock:
kkkkkkkkkkkkkkkkkkkkk
Calmaaa, calmaaaa, amigooo, amigoooo!
:hunf:
BOM… Deu p galera aí do GUJ ter algo em mãos… espero que tenha sido útil (com algumas excessões =D)! Encerro por aqui!
:thumbup:
Bom, fiz agora pra rodar em qualquer navegador, mastigadinho, e acrescido de algumas verificações de exceções extras de caracteres especiais.
[code]
[/code]
Bom mano, espero ter ajudado, qualquer dúvida ou reportar bugs, só dizer…
e não apelei, só respondi
Ficou certinho agora???
Deu certo??
Mais um, convertendo para maiúsculo:
[code]
[/code]
flw galera, até mais
E aí pessoal,
Sei que a dúvida tah marcada como resolvida, mas pra qm tah tendo dificuldades pra entender os códigos acima, envio esta função, pois acredito que este seja um código mais simples e auto-explicativo:
[code]function retiraAcento(palavra){
var com_acento = ‘áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ´`^¨~’;
var sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC ';
for (l in palavra){
for (l2 in com_acento){
if (palavra[l] == com_acento[l2]){
palavra=palavra.replace(palavra[l],sem_acento[l2]);
}
}
}
return palavra;
}[/code]
aí é só adequar a chamada da função a sua aplicação…
Abraço
E aí pessoal,
Sei que a dúvida tah marcada como resolvida, mas pra qm tah tendo dificuldades pra entender os códigos acima, envio esta função, pois acredito que este seja um código mais simples e auto-explicativo:
function retiraAcento(palavra){
var com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ´`^¨~';
var sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC ';
for (l in palavra){
for (l2 in com_acento){
if (palavra[l] == com_acento[l2]){
palavra=palavra.replace(palavra[l],sem_acento[l2]);
}
}
}
return palavra;
}
aí é só adequar a chamada da função a sua aplicação…
Abraço