Ir para conteúdo

POWERED BY:

Arquivado

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

Fleury

Barrando letras e caracteres especiais.

Recommended Posts

Bom pessoal, sou eu denovo...

Eu tenho campo de um formulário onde somente valores númericos são aceitos.

Minha idéia foi fazer uma função para o evento onKeyDown que verifica a tecla pressionada.

Somente se ele for um a tecla númerica é que vai ser digitado. Caso contrário, nem aparecer ela vai.

 

function fcnOnlyNum() {  switch (event.keyCode) {    case 48: return true; break;    case 49: return true; break;    case 50: return true; break;    case 51: return true; break;    case 52: return true; break;    case 53: return true; break;    case 54: return true; break;    case 55: return true; break;    case 56: return true; break;    case 57: return true; break;    case 96: return true; break;    case 97: return true; break;    case 98: return true; break;    case 99: return true; break;    case 100: return true; break;    case 101: return true; break;    case 102: return true; break;    case 103: return true; break;    case 104: return true; break;    case 105: return true; break;    default : return false;  }}

Como podem perceber, temos valores de 48 a 57 e de 96 a 105. Isso se deve ao fato de que o teclado numerico tem valores em ascii diferentes dos valores da teclas de números encontrado acima das teclas de letras do teclado.

 

então, no meu input ficou assim:

 

<input name="id" type="text" class="dq76r7" id="id" maxlength="50" value="" onKeyDown="fcnOnlyNum();fcnFocusNext();">

Obs.: A função fcnFocusNext(); serve para usar o Enter como Tab e funciona normalmente;

 

O problema é: não funciona... ele dá deixando eu usar qualquer caractere.

 

O que pode ser feito? =/

 

T+, abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parecido com o meu problema... resolvi com essa função ae mesmo !

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif NeoN

Parecido com o meu problema... resolvi com essa função ae mesmo !

Copiei de lá... http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

ja era os direitos autorais... eheheh

 

processa ele neon http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja era os direitos autorais... eheheh processa ele neon http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Fui eu que fiz pro Neon! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif :lol: :lol: http://forum.imasters.com.br/public/style_emoticons/default/yay.gif

ih rapa levantei falsa acusação...

 

tou fu...

 

esse cara vai me processar http://forum.imasters.com.br/public/style_emoticons/default/sick.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tsc tsc...

Voltando ao assunto do post eu descobri pq minha função não funcionava

Apesar da função do AAlves estar certa, devo dizer o que estava errado no meu para que talvez pessoas com o mesmo problema saibam o que ocorre.

 

Bom, o grande problema era que eu estava inserindo a chamada da função em onKeyUp. E por isso não tava dando. Quando você pega o evento do teclado pelo onKeyUp ascii usado é outro.

 

Por exemplo, no onKeyUp a tecla de número 1 acima das teclas de letras do teclado tem valor ascii de 48 enquanto no teclado númerico, a tecla 1 tem o valor 96.

Já no onKeyPress, as duas teclas tem o valor 48.

 

Isso é só a diferença mas não era o problema de verdade. Parece que quando eu usava onKeyUp a função era chamada somente depois da tecla ja ter sido inserida no campo. Ou seja, quando você usando onKeyPress, a função é chamada ao ser pressionada a tecla e é retornada uma resposta antes do caractere ser inserido no campo.

 

Concluindo: A solução foi só mundar de onKeyUp para onKeyDown.

 

Abaixo, segue o codigo que eu fiz para aceitar também pontos e virgulas.

 

Abraços galera, t+

 

function fcnOnlyNum2() {  switch (event.keyCode) {    case 44: return; break;    case 46: return; break;    case 48: return; break;    case 49: return; break;    case 50: return; break;    case 51: return; break;    case 52: return; break;    case 53: return; break;    case 54: return; break;    case 55: return; break;    case 56: return; break;    case 57: return; break;    case 110: return; break;    case 188: return; break;    case 190: return; break;    case 194: return; break;    default : event.keyCode=0;  }}

Obs.: Na função do AAlves, se você usar ela em onKeyUp, além de não funcionar, muitas teclas deixão de funcionar como espaço e delete mas letras ainda funcionam. Ao pressionar Ctrl, Alt, Shift, o script da erro reconhecido pelo browser como: Acesso negado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e se eu quiser deixar o user digitar "-" o traço? sera que tem como usando essa função ai?eu tentei [0-9-]; [0-9,-] nao funcionou

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.