Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jonatã Cioni

Como restringir o input a receber somente numeros?

Recommended Posts

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, se tal necessidade for em tempo real (Client-Side), utilize a dica do Bruno, se a necessidade for por consulta, (Server-Side) poderá utilizar a função passada pelo colega.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se estiver usando jquery, veja um método sem utilizar "javascript inline":

 

 

<script type="text/javascript">
function frm_number_only_exc(){
// allowed: numeric keys, numeric numpad keys, backspace, del and delete keys
if ( event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40 || event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || ( event.keyCode < 106 && event.keyCode > 95 ) ) { 
	return true;
}else{
	return false;
}
}

$(document).ready(function(){

$("input.frm_number_only").keydown(function(event) { 

       if ( frm_number_only_exc() ) { 

       } else { 
               if ( event.keyCode < 48 || event.keyCode > 57 ) { 
                       event.preventDefault();  
               }        
       } 
   }); 

});
</script>

 

 

no html, basta identificar pela classname, sem necessidade de embutir o javascript inline no elemento:

 

<input name="e_name" type="text" size="5" class="frm_number_only">

 

vantagens:

1- Flexibilidade nas aplicações, por exemplo, no uso de Form Helpers de um framework.

2- Portabilidade, por exemplo, quando o aplicativo for acessado por ambientes diferentes (pc, mobile, tablet, etc..), simplifica o controle do comportamento dos elementos.

3- no script acima está incluindo também o uso das teclas backspace, del, delete e o teclado numérico (numpad). Sendo que nessa mesma funçao poderá implementar outros códigos de exceção como o "ponto" ou "vírgula", usados em números decimais.

 

* o código não é seguro contra CTRL+V, no entanto, se quiser pode adaptá-lo para sempre verificar o conteúdo entrado, chamando outros eventos além do "onkeydown".

 

 

Para finalizar, sempre faça o tratamento server-side.

 

 

 

obs: é apenas uma dica.. não quer dizer que seja melhor do que fulano ou beltrano...

cada um aplica o que for conveniente para o seu caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenha sempre em mente amigo Jonatã Cioni que Javascript(Client-Side) não obriga ninguém a nada.

Ele é apenas uma forma bacana que temos de evitar erros por parte do cliente leigo facilitando com

que ele possa preencher os campos da forma correta por exemplo.

 

Se o campo tem obrigação de ser numérico nunca se esqueça de fazer a verificação com o PHP(Server-Side).

O PHP sim pode obrigar o usuário a preencher o campo corretamente caso o mesmo tente burlar o javascript

ou o navegador em questão por algum motivo não ofereça suporte a javascript.

 

Note que não disse para deixar de utilizar um e usar o outro, mas sim para trabalhar sempre em conjunto (Javascript + PHP). ;)

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma opção rápida:

<input onkeyup='if (isNaN(this.value)) {this.value = ""}'>

Dentro disto você pode implementar outras coisas também. Isto é apenas uma idéia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.