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

Números E Teclas - Bloqueando-os


[ GuTo ]

Pergunta

Salve!!!

Quero fazer um código q filtre apenas números na hora q o cara tiver digitando, e tem de ser CROSSBROWSER.

Aceitar apenas números.

Fiz isso mas não tá dando certo:

<!--
function numeros() { 
if (document.all) { nTecla = event.keyCode; } // Internet Explorer
else if(document.layers && navigator.appName.indexOf("Mozilla") == -1) { nTecla = event.which; }  //Netscape
else { nTecla = event.which; }// Mozilla / FireFox / Opera 

if ((nTecla < 44) || (nTecla > 57)) { 
	if ((nTecla < 96) || (nTecla > 106)) { 
  //alert("Somente números são permitidos");
  event.returnValue = false;
	}
}
}
// Pra chamar, uso <input type="text" onKeypress="return numeros();">
// -->
E depois fiz uma pra saber quais são os códigos das teclas, mas não sei ao certo como fazer: Tentei assim:
<!--
if (document.all) { nTecla = event.keyCode; } // Internet Explorer
else if(document.layers && navigator.appName.indexOf("Mozilla") == -1) { nTecla = event.which; }  //Netscape
else { nTecla = event.which; }// Mozilla / FireFox / Opera 

for(i=0;i<nTecla.lenght;i++) {
	document.write(nTecla[i] + '=' + i)
}
// -->

Se alguém puder ajudar, agradeço!

Até mais!

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

<!--
function numeros(event) {
if (document.all) { nTecla = event.keyCode; } // Internet Explorer
else if(document.layers && navigator.appName.indexOf("Mozilla") == -1) { nTecla = event.which; }  //Netscape
else { nTecla = event.which; }// Mozilla / FireFox / Opera

if ((nTecla < 44) || (nTecla > 57)) {
if ((nTecla < 96) || (nTecla > 106)) {
 return false;
}
}
}
<input type="text" onKeydown="return numeros(event);">
// -->

Dei uma "ajeitada" no teu primeiro código. testa q não pude testar...

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, não deu!

Por favor, me ajuda mesmo!

Não consigo arrumar esta b*sta!

Em outro fórum ninguém ajuda...

Em pensar q eu quando fui moderador ajudava todo mundo...

Link para o comentário
Compartilhar em outros sites

  • 0

<html>

<head>

<script language="javascript">

    function ajustar_numero(input)

    {

      if ((event.keyCode<44)||(event.keyCode>57)){

        event.returnValue = false;

      }

    }

</script>

<body>

<form name="form1" method="post" action="">

<input name="valor" type="text" onkeypress="ajustar_numero()" />

</form>

</body>

</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Ok fabyo!

Mas funciona no IE!

E pra funciona no FireFox/Mozilla/Opera/Netscape ?

estou usando o event.which, está errado?

Não funciona sem ser no IE...

Tava olhando agora e dá na mesma eu fazer assim ó, mas continua não funfando nos outros, só no IEca.

Veja:

<script language="JavaScript" type="text/javascript">
<!--
function sonumeros() {
if (document.all) { nTecla = event.keyCode; } // Internet Explorer
else if(document.layers && navigator.appName.indexOf("Mozilla") == -1) { nTecla = event.which; }  //Netscape
else { nTecla = event.which; }// Mozilla / FireFox / Opera

if ((nTecla < 48) || (nTecla > 57)) { event.returnValue = false }
}
/*
Não precisa disso, sei lá, mas o browser interpreta como valores iguais eu acho... porque estes são do NumLock, aquele tecladinho só com numeros no canto direito do teclado...
	if ((nTecla < 96) || (nTecla > 105)) {
  event.returnValue = false }*/
// -->
</script>

<input type="text" onKeypress="return sonumeros();">

Link para o comentário
Compartilhar em outros sites

  • 0

E aí, Guto!

Eu utilizo esta função pra resolver isso... funciona no IE, Opera, Mozilla...

Abraços!

<script type="text/javascript">

    /*

    *  function numbers ( event )

    *

    *  Carlos Reche

    *  Jan, 2005

    */

    function numbers(evt)

    {

        var key_code = evt.keyCode  ? evt.keyCode  :

                       evt.charCode ? evt.charCode :

                       evt.which    ? evt.which    : void 0;

        // Habilita teclas <DEL>, <TAB>, <ENTER>, <ESC> e <BACKSPACE>

        if (key_code == 8  ||  key_code == 9  ||  key_code == 13  ||  key_code == 27  ||  key_code == 46)

        {

            return true;

        }

        // Habilita teclas <HOME>, <END>, mais as quatros setas de navegação (cima, baixo, direta, esquerda)

        else if ((key_code >= 35)  &&  (key_code <= 40))

        {

            return true

        }

        // Habilita números de 0 a 9

        else if ((key_code >= 48)  &&  (key_code <= 57))

        {

            return true

        }

        return false;

    }

</script>

Exemplo de como utilizar:

<input type="text" onkeypress="javascript: return numbers(event);" />

Link para o comentário
Compartilhar em outros sites

  • 0

Aí brother!

Exclente! Aceita estes caracteres ak tbmi: '#$%&(.

Mas dae é só fazer uma condição pra bloquear cada um, sem problemas.

Agora umas dúvidas:

- O event.which funciona em quais browsers?

- O event.charCode funciona em quais browsers?

- Não precisamos usar o event.returnValue = true ou false? (Pelo q vi não). Mas sem ele é certo ou digamos não semântico para o JS?

- Ah, o void eu sei q é uma palavra reservada, mas ali, o q ele fará ou "dirá" a condição?

Link para o comentário
Compartilhar em outros sites

  • 0

fala brother, cara as propriedades charCode e o which do exemplo do Illidan são para manter compatibilidade com navegadores mais antigos, pois o keyCode é suportado pelos principais browsers em suas versões mais recentes. O void 0 seria para o caso de o browser não suportar nenhuma das três propriedades para capturar a tecla, então significa q ele vai atribuir 0 a variavel key_code.

Outra coisa, os eventos que ocorrem são de suma importância para que as functions funcionem em diferentes browsers. Se tu fizer um teste com o código q o fabyo passou e trocar a chamada do evento de onkeypress para onkeydown você vai conseguir fazer funcionar no mozilla.

Qualquer coisa posta ae...

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

Pelo que eu saiba, o keyCode é pra IE.

O which não tenho certeza, mas dizem q é do Mozilla / FireFox / Opera.

O charCode eu não sei!

Poderiam me esclarecer isso?

E sem querer ser chato, mas o do fabyo eu acho q tá errado... sad.gif

Link para o comentário
Compartilhar em outros sites

  • 0

beleza pura!!

Então, o which é só pro FireFox?

Ah e o charCode?

E uma coisa:

onkeyup e onkeydown tem o mesmo efeito de onkeypress não? Tipo, quando eu estou digitando num campo...

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

Os eventos 1° - onkeydown, 2° - onkeypress, 3° - onkeyup, ocorrem nessa ordem. Seria quando a tecla desce(onkeydown) quando ela está pressionada(onkeypress) e quando ela foi solta e está indo de volta a sua posição(onkeyup). O charCode é para se pegar o valor quando a tecla está pressioanda (onkeypress), e funciona somente no NN(Padrão Netscape). O keyCode é para pegar o valor quando a tecla está sendo apertada(onkeydown) ou é solta(onkeyup). O which funciona apenas no NN4(teoricamente).

Qualquer coisa posta ae...

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

Na função que o Illidan fez ali, nossa quase perfeita, rsss!

Eu até verifiquei todas as teclas, e só escapam estas (com seus respectivos códigos correspondentes)

# $ % & ( .

35 36 37 38 40 46

Só que tem outras teclas com mesmo código, um exemplo é o DEL e o Ponto(.).

Dae será que tem como pegar apenas o valor que está sendo digitado na hora e fazer a verificação se não é nenhum destes 6 caracteres ae?

Desculpe pela chatice, mas é q tenho mania de perfeição tongue.gif

Até mais,

Abraços! biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

up!

Link para o comentário
Compartilhar em outros sites

  • 0

up!

Link para o comentário
Compartilhar em outros sites

  • 0

Só que tem outras teclas com mesmo código, um exemplo é o DEL e o Ponto(.).

Dae será que tem como pegar apenas o valor que está sendo digitado na hora e fazer a verificação se não é nenhum destes 6 caracteres ae?
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...