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

(Resolvido) textbox aceitar somente números e vírgula?


LucasConstantino

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

e aew LucasConstantino, tenta tipo assim:

<script language="javascript" >
function funcao( obj , e )
{
    var tecla = ( window.event ) ? e.keyCode : e.which;
    if ( tecla == 8 || tecla == 0 )
        return true;
    if ( tecla != 44 && tecla < 48 || tecla > 57 )
        return false;
}

</script>
e chama assim:
<input type="text" onkeypress="return nomeFuncao( this , event ) ;" />

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

  • 0

Haha, funcionou exatamente como eu havia pedido... porém, como eu sou burro; backspace também é botão! Isso quer dizer que não posso mais limpar o texto! hahaha...

bom, também não poderia permitir adicionar mais de uma vírgula no textbox, ou seja, 'se' já tivesse uma vírgula, a segunda não poderia entrar... mas isso pode deixar que eu dou um jeito e logo logo posto aqui... se alguém achar a solução antes, sinta-se livre também pra responder!

Link para o comentário
Compartilhar em outros sites

  • 0

Então, já ta resolvido. Na verdade quanto ao backscape não precisei fazer nada, o código do Romerito funcionava mesmo (que teclas são 0 e 8? backscape e outra?).

Quanto as vírgulas e pontos ajeitei assim:

function keypressed( obj , e ) {
     var tecla = ( window.event ) ? e.keyCode : e.which;
     var texto = document.getElementById("numeros").value
     var indexvir = texto.indexOf(",")
     var indexpon = texto.indexOf(".")
    
    if ( tecla == 8 || tecla == 0 )
        return true;
    if ( tecla != 44 && tecla != 46 && tecla < 48 || tecla > 57 )
        return false;
    if (tecla == 44) { if (indexvir !== -1 || indexpon !== -1) {return false} }
    if (tecla == 46) { if (indexvir !== -1 || indexpon !== -1) {return false} }
}
Usei "document.getElementById("numeros").value" pra definar a variavel e depois "indexOf(",")" pra procurar vírgulas nessa variável e "indexOf(".")" pra procurar pontos na mesma. Quando não encontrar, o valor é setado como -1. Daí vem o if das teclas 44 e 46 (vírgula e ponto), que vêem se há presença ("!= 1") ou não de vírgulas e pontos. Sendo verdade, o valor não é retornado ao texto. Se for falso (não existirem pontos e vírgulas no texto), o valor é retornado. Dai então a function keypressed é chamada em "onkeypressed" pelo textbox:
<input type="text" id="numeros" value="" onkeypress="return keypressed( this , event );"/>

Esse código todo posto acima está RESOLVIDO e pode ser usado para textbox onde o usúario deverá inserir números, que podem ser decimais ou podem não ser. Assim, vírgula e ponto são iguais, explicando a preocupação acima.

Obrigado Romerito!

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

  • 0
que teclas são 0 e 8? backscape e outra?

A tecla 8 é o backspace e o 0 não serviria pra nada nesse código (é usada para marcar o fim de uma string)

Se quiser deixar o enter habilitado pode verificar se o código da tecla é 13

Você pode ver o código de outras teclas aqui: http://pt.wikipedia.org/wiki/Ascii

Parabéns por ter conseguido resolver a outra parte do código sozinho e ao Romerito que ajudou !

Obs.:

O tópico foi marcado como Resolvido

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...