Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Converter letras minúsculas para maiúsculas


douglascrp

Pergunta

e aí pessoal, beleza?

seguinte... é meu primeiro post aqui...

já sei q vão me dizer "você já pesquisou no fórum?", mas já adianto... sim, já pesquisei... rs

o que acontece é que o código que desenvolvi consegue converter todas as letras para maiúsculas normalmente, EXCETO quando a letra tem acentos.

por exemplo:

se digito "a", o código converte para "A", perfeitamente, mas se digito "á", o código não faz nada.... no caso, o evento onkeypress nem é disparado.

segue meu código.

function upperCase(event) {
    var keynum;

    // IE
    if (window.event) {
        keynum = event.keyCode;
    }
    // Netscape/Firefox/Opera
    else if (event.which) {
        keynum = event.which;
    }

    if ((keynum >= 97 && keynum <= 122) || (keynum >= 224 && keynum <= 255)) {
        // converte de acordo com o valor decimal da tecla na tabela ascii    
        keynum = keynum - 32;
        
        // IE
        if (window.event) {
            window.event.keyCode = keynum;
        }
        // firefox e outros que usam o Gecko
        else if (event.which) {
            var newEvent = document.createEvent("KeyEvents");
            newEvent.initKeyEvent("keypress", true, true, document.defaultView,
                        event.ctrlKey, event.altKey, event.shiftKey,
                        event.metaKey, 0, keynum);
            event.preventDefault();
            event.target.dispatchEvent(newEvent);
        }
    }
    
    return true;
}
estou chamando a função acima da seguinte forma:
<input type="text" id="txtNome" name="cliente.nome" onkeypress="upperCase(event)" />

agradeço desde já pela atenção de todos.

abraços

Editado por douglascrp
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

e aí jothaz... beleza?

cara, já tentei isso, mas não funciona muito bem...

faça um teste você mesmo, assim:

crie um form e insira nele um input

no onkeypress do input, insira o código this.value=this.value.toUpperCase()

deve ficar da seguinte forma:

<input type="text" id="txtNome" name="cliente.nome" onkeypress="this.value=this.value.toUpperCase()" />

agora tente digitar qualquer coisa nesse input, tipo "teste"... vai parecer que está tudo certo, pois ele vai converter para "TESTE".

mas agora sim vem o problema.... coloque o cursor "no meio do texto", antes do "S", por exemplo, e digite qualquer letra....

o script vai converter esse caractere para maiúsculo, mas vai jogar o cursor para o fim do texto...

o meu sistema já estava assim, mas quando os usuários precisam editar o texto, eles precisam apagar tudo para digitar novamente, devido a esse probleminha, e aí já viu, né, quem escuta sou eu... rs

mas valeu pela resposta

abraços

Link para o comentário
Compartilhar em outros sites

  • 0
você quer a conversão em tempo real.

Assim que for digitando vai ficando maiusculo!?

Porque que você não converte após a digitação esta completa.

Simplifica bem o código.

Mas vou dar um olhada aqui se tenho algo que possa ajudá-lo.

é exatamente isso... quero fazer com que enquanto o usuário digita, o texto já vá sendo alterado...

eu fiz o que você falou, no caso, alterar o texto somente quando o usuário tirar o foco do campo, com o evento onblur, assim

<input type="text" id="txtNome" name="cliente.nome" onblur="this.value=this.value.toUpperCase()" />

e mais uma vez, o código funcionou perfeitamente...

mas denovo, faça um teste...

coloque esse código para rodar, mas quando terminar de digitar, pressione Enter, sem tirar o foco do input....

o q acontece aqui? o form é "submetido" sem disparar o evento onblur.... rs

parece até brincadeira, mas é isso q acontece...

falou

Link para o comentário
Compartilhar em outros sites

  • 0

você é dos chatos! :o)

Quer a parada rodando em real time!!! :o)

Nunca fiz nada parecido mas concerteza é possível fazê-lo

E utilizar o onblur relamene deixa alguns furos.

Eu normalmente faço este tipo de operação na consistência ou na gravação dos campos.

Vou pesquisar se tenho algo assim e lhe retorno.

Link para o comentário
Compartilhar em outros sites

  • 0

Ih ai brother.

porque você não tenta colocar a chamada em: onKeyDown, onKeyPress e onKeyUp.

De repente dispara a chamada da função.

porque se não esta nem disparando a chamada a função o erro não estaria nela.

você já colocou um alert dentro da função javascript e debugar o códgio.

É cansativo mas se for acompanhado a execução da funão passo a passo pode ter um idéia do problema.

Mas tenta o que sugeir acima.

Link para o comentário
Compartilhar em outros sites

  • 0

grande jothaz...

cara, já tentei isso tb, mas nenhum deles dispara o evento com caracteres acentuados... com os caracteres normais, funciona.

o código funciona no IE, mas no firefox não.

erro não função não é, pois já testei e "debuguei" com o firebug e está funcionando perfeitamente, exceto, como já foi citado, para caracteres acentuados.

bom... valeu mesmo pelo interesse em me ajudar...

qualquer coisa, dá um grito

abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...