Javascript - Captura de teclas especiais não funciona no Firefox [RESOLVIDO]

2 respostas
V

Olá pessoal, estou fazendo uma validação em javascript para que o usuário possa apenas inserir números no input, além disso ele também poderá utilizar as teclas enter, backspace, delete e as setas de direção

O problema é no firefox, ele consegue usar backspace, mas NÃO consegue usar delete e as setas de movimento

Código do input

<input type="text" name="tmp_numProcPrev" id="tmp_numProcPrev" value="" onkeypress="return verificaTecla(event)"/>

Código da Função Javascript

/*
      Objeivo: Impedir que seja digitados caracteres
                diferentes de 0 a 9, Enter, Delete, Backspace, tecla esquerda e tecla direita
      */
      function verificaTecla(evt){
        /*
            Código 48 a 57 = Teclas 0 a 9
            Código 13 = Tecla Enter
            Código 83 = Tecla Delete
            Código 08 = Tecla Backspace
            Código 75 = Seta Esquerda
            Código 77 = Seta Direita
        */
        
        var tecla;
        
        if(window.event) // IE
        {
           tecla = evt.keyCode;
        }
        else if(evt.which) // Netscape/Firefox/Opera
        {
           tecla = evt.which;
        }

      
        if(tecla==13 || tecla == 83 || tecla == 8 ||tecla == 75 || tecla == 77 || (tecla >= 48 && tecla <=57)){
          return true;
        }
        else
        {
          return false;
        }
        
      }

2 Respostas

L

venomtotal,

Primeiro, recomendo fortemente você a usar jQuery para controlar os eventos do teclado.

O jQuery normaliza - no que chamamos de crossbrowser - para todos os browsers utilizando a propriedade “event.which”, veja http://api.jquery.com/event.which/, lá possui um exemplo de código para você entender.

Espero ter ajudado!

Um abraço!

V

Leandro, agradeço a ajuda, dá próxima vez usarei jquery, mas consegui contornar no javascript puro, segue abaixo o código:

function verificaTecla(evt){

        /*
            ASCII Código   - 48 a 57 = Teclas 0 a 9
            ASCII Código   - 13 = Tecla Enter  
            ASCII Código   - 08 = Tecla Backspace 
            keyCode Código - 37 = Seta Esquerda
            keyCode Código - 39 = Seta Direita
            keyCode Código - 46 = Tecla Delete
        */


        var tecla;

        if(evt.which)
        {
           tecla = evt.which
             //alert("which" + " - " + tecla);
        }
        else if(evt.keyCode) // Netscape/Firefox/Opera
        {
           tecla = evt.keyCode;
          //alert("keyCode" + " - " + tecla);
        }


           
      
        if(tecla==13 || tecla == 8 || tecla == 37 || tecla == 39 || tecla == 46 || (tecla >= 48 && tecla <=57)){
          return true;
        }
        else
        {
          return false;
        }
        
      }
Criado 17 de dezembro de 2010
Ultima resposta 17 de dez. de 2010
Respostas 2
Participantes 2