Funcao JavaScript para numeros. [RESOLVIDO]

9 respostas
B

Galera,

Nunca trabalhei com javaScript, essa é a primeira vez. E eu preciso que um inputText receba somente numeros. Pegue esse codigo na web
<script language='JavaScript'>
function SomenteNumero(e){
    var tecla=(window.event)?event.keyCode:e.which;   
    if((tecla>47 && tecla<58))
            return true;
       else  return false;
    }
}
</script>

So que nao sei o pq, o eclipse fica reclamando do && e do <, pra resolver isso quebrei em dois ifs, e coloquei q nao é maior que o valor que eu quero. e ficou assim:

<ui:define name="script">
  	
  	function soNumero(event){
    	 var tecla = (window.event) ? event.keyCode : event.which;
	        if (tecla > 47){
        		if (!tecla > 58) 
    	    		  return true;
        	 else 
            	     return false;  
        	}
    }
  	
  	</ui:define>

So que nao sei o pq nao esta funcionando.. esta aceitando tanto letra quanto numero....

Galera Help me.. rsrsrs

9 Respostas

D
Isso aqui funciona. Acho que você errou em algum lugar.
<html>
	<head>
		<script>
			function permite(){
				var tecla=(window.event)?event.keyCode:e.which;
				if(tecla > 47 && tecla < 58 || tecla == 8 || tecla == 0){
					return true;
				}
				return false;
			}
		</script>
	</head>
	<body>
		Teste <input type="text" onkeypress="return permite();"
	</body>
</html>
B

[b]Entao, a unica coisa que mudei eh o && e o sinal de < pq esta dando erro : The entity name must immediately follow the ‘&’ in the entity reference. E o sinal de < ele esta reconhecendo como abertura de tag.

por isso que quebrei em 2 ifs, pra tirar o &&[/b] :?

B

[b]drsmachado

Uma coisa que acabei de perceber fazendo uns teste aqui.
a funcao esta funcionando direitinho, esta passando em todos os if.’

So que mesmo assim, esta escrevendo as letras, mesmo quando o resultado eh false. Tem algum jeito de bloquear a escrita quando o resultado for false ? :roll: [/b]

R

Bom, se você fizer o teste de mesa vai ver a falha no seu códigofunction permite(){ var tecla=(window.event)?event.keyCode:e.which; if (tecla > 47){ if (!tecla > 58) return true; }else{ return false; } }Vamos supor que o usuário digite a letra ‘a’, que terá valor 97.
no primeiro if você pergunta, 97 é maior do que 47? Sim, ele entra no primeiro if
aí no segundo if você pergunta, 97 não é maior que 58? ou seja, 97 é menor que 58? não, portanto ele não faz mais nada, terminando a execução do segundo if, e logo em seguida a doprimeiro.

o else só sera executado quando o valor for inferior a 47.

O que você pode fazer é alterar seu código dessa maneirafunction permite(){ var tecla=(window.event)?event.keyCode:e.which; if (tecla > 47){ if (!tecla > 58){ return true; }else{ return false; } }else{ return false; } } Como você quis 2 ifs, tem que ter 2 elses também.
Mas sinceramente, não sei o que há de errado com o seu primeiro código, executei o exemplo do drsmachado e funcionou perfeitamente.

B

[b]Obrigada digaoneves

Funcionou certinho…

So usei 2 ifs pq o eclipse ficou reclamando, nao se tem alguma coisa a ver mas minha tela use JSF.

Obrigada Galera.

[/b]

R

tem uns detalhes estranhos… na linha do seu if, você não abre chaves, porém algumas linhas abaixo tem chaves para fechá-lo.
você usa 2 parenteses onde só é necessário ter 1 (sei que isso não causa nenhum erro, mas ainda é estranho :))

Você chegou a testar o código sugerido pelo drsmachado? Eu sugiro que teste, está muito mais limpo e legível do que o seu atual.

B

[b]sim, teste.
Mas como falei, esta dando erro nos && e no sinal <

Sabe que acontece isso ?[/b]

E

Caracteres & , < e > são especiais para o HTML e XML.
Você precisa cercar seu script com a tag CDATA, para ele não ficar dando essa mensagem de erro. OK?
(Estou dando um exemplo, mas não quer dizer que o exemplo tenha código correto. Só estou mostrando como se usa CDATA)

<script type="text/javascript">
//<![CDATA[
            function permite(){  
                var tecla=(window.event)?event.keyCode:e.which;  
                if(tecla > 47 && tecla < 58 || tecla == 8 || tecla == 0){  
                    return true;  
                }  
                return false;  
            }  
//]]>
</script>
B

[b]Ha.
Mtoo bom saber…

Obrigada entanglement.

Criado 14 de junho de 2012
Ultima resposta 14 de jun. de 2012
Respostas 9
Participantes 4