OFF - Bloquear teclado -

477 views
Skip to first unread message

Tiago Pastorello

unread,
Sep 27, 2011, 5:53:42 PM9/27/11
to list...@googlegroups.com
Boa noite senhores.

Tenho um sistema web que utiliza leitores de código de barra para identificar funcionários.
Preciso bloquear o uso do teclado no campo que faz a leitura e até agora não encontrei nenhuma solução pois o leitor e o
teclado "são a mesma coisa".

Encontrei o pluguin BarcodeListener, porém não consigo fazer funcionar.
Alguém tem idéia de como utiliza isso?
Já segui as instruções do wiki e até agora nada. Obrigado.

Liks:
http://code.google.com/p/jquery-barcodelistener/wiki/setup
http://jquery-barcodelistener.googlecode.com/svn-history/r24/trunk/wizard.html



--
Tiago Pastorello
Vinteum Desenvolvimento

47 3028 5431
http://vinteum.com

Felipe Duardo

unread,
Sep 28, 2011, 7:40:07 AM9/28/11
to list...@googlegroups.com
então acho que você precisaria de javascript para bloquear as teclas..
senão me engano tem algo assim tipo bloquear letras e tals, mas não tenho certeza...

2011/9/27 Tiago Pastorello <ti...@vinteum.com>
--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
JQUERY MAGAZINE > http://www.jquerymagazine.com.br
--
PHP MAGAZINE > http://www.phpmagazine.com.br
--
LISTA NODE.JS > https://groups.google.com/group/lista-nodejs?hl=pt-br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================



--
Felipe Duardo

Bruno Gasparetto

unread,
Sep 28, 2011, 10:32:25 AM9/28/11
to list...@googlegroups.com
Nunca tentei bloquear o teclado ao usar código de barras, pois o leitor age como um teclado e nem imagino se o navegador indicaria o tipo de periférico usado para os dados.

Se a intenção é não permitir o uso do teclado você mandar esconderem o teclado do pc. Já vi empresa usando assim.

Bloquear letras pode ser uma solução, mas depende do tipo de código de barras, afinal alguns utilizam letras além dos números.

--
Bruno Gasparetto

Diego Giacobbo

unread,
Sep 28, 2011, 10:45:04 AM9/28/11
to list...@googlegroups.com
<script language=JavaScript>
function keypresed() {
alert('seu teclado está desabilitado!!');
}
document.onkeydown=keypresed;
document.onmousedown=click;
</script>


2011/9/28 Felipe Duardo <felipe...@gmail.com>



--

Atenciosamente (Best regards), Diego Bueno Giacobo.


Cassiano Ricardo Mourão

unread,
Sep 28, 2011, 12:53:26 PM9/28/11
to list...@googlegroups.com
Não dá pra colocar o campo como hidden?

E se você capturar o keydown como o Diego postou acima, possivelmente vai 'travar' a digitação ao mesmo tempo que permite o preenchimento a partir do periférico. Partindo do pressuposto que o SO/Browser envia a string do código pela área de transferência.

2011/9/28 Diego Giacobbo <diegog...@gmail.com>

Tiago Pastorello

unread,
Sep 28, 2011, 4:41:41 PM9/28/11
to list...@googlegroups.com
Boa tarde galera.

Eu sei que não se usa PHP, por isso mandei aqueles links com um plugin para Jquery.
Tentei usar o plugin mas não consegui, simplesmente não funciona =\

Já tentei fazer de tudo, mas o leitor se comporta como teclado e quando bloqueia o teclado, bloqueia o leitor.
Vou dar uma olhada no keypress com o Diogo falou.

Se alguém tiver mais susgestões são bem vindas.

abraços!


2011/9/28 Cassiano Ricardo Mourão <cassian...@gmail.com>

Rodrigo Cesar Nascimento

unread,
Sep 28, 2011, 4:55:19 PM9/28/11
to list...@googlegroups.com
cara... se o sr saca de jquery faça o seguinte. primeiro descubra qual tecla o leitor digita. sabendo isso, depois o sr vai fazer uma função que vai travar todas as teclas menos essa.

2011/9/28 Tiago Pastorello <ti...@vinteum.com>



--
[]'s
Rodrigo César Costa do Nascimento
Se queres viver e comer como um cão, podes ir dormir lá para fora. Se queres viver como um ser humano, pega esse hashi! (Pai Mei)

Vinicius Rezende

unread,
Sep 28, 2011, 4:57:44 PM9/28/11
to list...@googlegroups.com
verifique a velocidade de digitação, geralmente leitores mandam o código inteiro em pouco tempo código de barras de cigarro(o menor) tem 8 digitos... 8 digitos em 1 segundo = ninja :)

Vinicius Rezende

unread,
Sep 28, 2011, 4:58:12 PM9/28/11
to list...@googlegroups.com
Faltou pontuação e concordância no meu e-mail anterior, mas sabe como é: 17:58

Tiago Pastorello

unread,
Sep 28, 2011, 5:15:54 PM9/28/11
to list...@googlegroups.com
O leitor manda digito por digito, mas muito rápido é claro. E após ler ele envia um "TAB".

Tiago Pastorello

unread,
Sep 28, 2011, 10:38:48 PM9/28/11
to list...@googlegroups.com
Funcionou!

Coloquei um contador de tempo.
Caso seja informado 4 teclas em 1 centésimo de segundo ou menos é interpretado como informado pelo leitor de código de barras, caso o tempo for maior é interpretado como entrada por teclado.

Acredito que ninguém consegue digitar 4 números ou mais em 1 centésimo de segundo.

Obrigado.

============================
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">       
        <script type="text/javascript" src="jquery-1.3.2.min.js"></script>               
    </head>
    <body>
        <div name="posicao"></div>
        <input type="text" name="teclado">                      
        <div name="buffer"></div>                       
        <input type="text" id="txt">
        <div name="posicaoTime"></div>
        <div name="tempo"></div>  
        <h3 style="font-size: 30px;"></h3>
    </body>                          
   <script type="text/javascript">       
       
        var dados   = new Array();       
        var time    = new Array();
       
        var tempoFinal;
        var tempoInicio;
        var tempo;
       
        var valor   = Number(0);               
        var a       = 1;
        var posicao = 0;
        var x       = 0;
       
       
        function startCount(){           
            $('#txt').val(a);
            a = a + 1;   
            x = setTimeout("startCount()",(100));                                               
        }

        function stopCount(){
            clearTimeout(x)
        }       
       
        function buffer(entrada){                              
            posicao         = dados.length;                       
            dados[posicao]  = entrada;            
           
            posicaoTime = time.length;
            time[posicaoTime] = a;           
           
            var string     = "";                                               
            var stringTime = "";            

            $('div[name="posicao"]').html("Posição: " + posicao);                                                     
            $('div[name="posicaoTime"]').html("PosiçãoTime: " + posicaoTime);  

            if(dados.length > 4){
                tempoInicial = time[0];
                tempoFinal   = time[time.length-1];
                tempo        = tempoFinal - tempoInicial;                       

                if(tempo <= 1){
                    $('h3').html("Você usou o leitor = " + tempo);                   
                }else{
                    $('h3').html("Você usou o teclado = " + tempo);                   
                }   
            }else{
                $('h3').html("");
            }                  
                      
            $.each(dados, function(index, value) {                                
                if(value==9){
                    dados.length = 0;
                    time.length  = 0;
                    $('input[name="teclado"]').val("");                   
                }else{
                    string = string.concat(value);                       
                }
                $('div[name="buffer"]').html(string);               
            });        
           
            $.each(time, function(index, value) {                                
                stringTime = stringTime.concat(value);
                $('div[name="tempo"]').html(stringTime);
            });                       
        }               
       
        $('input[name="teclado"]').keydown(function(e) {                                    
            buffer(e.keyCode);                       
        });               
               
        $(document).ready( function(){
            startCount();
            $('input[name="teclado"]').focus();
        });
       
        $('#txt').focus( function(){
            $('input[name="teclado"]').focus();
        });
    </script>     
</html>
============================

David F A B Fante - Juntus TI

unread,
Sep 28, 2011, 11:01:20 PM9/28/11
to list...@googlegroups.com

Isso ai!!
Muito bacana sua atitude de compartilhar conosco sua soluçao.

Abraços

David F A B Fante

Vinicius Rezende

unread,
Sep 29, 2011, 11:02:01 AM9/29/11
to list...@googlegroups.com
Nunca caguei tanto numa epifania :)

Valeu por compartilhar

2011/9/29 David F A B Fante - Juntus TI <david...@gmail.com>

Cassiano Ricardo Mourão

unread,
Sep 29, 2011, 12:33:57 PM9/29/11
to list...@googlegroups.com
E se eu, usuário desgramado do jeito que sou, copiar e colar alguma string? ¬¬'

Alessandro Santos

unread,
Sep 29, 2011, 1:03:26 PM9/29/11
to list...@googlegroups.com
Nesse caso, conte os onkeydowns...

Se eu der Ctrl+V, são 2 ou 1 onkeydown acho

Agora se a quantida de onkeydowns for igual ao tamanho da string...

2011/9/29 Cassiano Ricardo Mourão <cassian...@gmail.com>



--
# Alessandro Ramos dos Santos @ Itaporanga @ SP @ Brasil
# Home: alessandrosantos.com.br # Twitter: @edenfall # MSN: lee.rain # Gtalk: edenfall # Skype: leaf473 # Facebook: /santos.alessandro # Plus: /110097424621696877881

"A nação que resolve trocar um pouco de liberdade por um pouco de ordem não consegue nenhuma das duas, e não merece a ambas" - Thomas Jefferson

Tiago Pastorello

unread,
Sep 29, 2011, 1:53:38 PM9/29/11
to list...@googlegroups.com
Isso se resolve deixando o campo "readonly" e desativando as teclas "Ctrl, C, V".
A únicas teclas que não podiam ser desativadas eram os números no meu caso.

2011/9/29 Alessandro Santos <eden...@gmail.com>

Tiago Pastorello

unread,
Sep 29, 2011, 2:35:56 PM9/29/11
to list...@googlegroups.com
Pronto, bloqueado CTRL, C, V e letras.
E também uma função para converter ASCII em string.

;-)

======================================

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">       
        <script type="text/javascript" src="jquery-1.3.2.min.js"></script>               
    </head>
    <body>
        <div name="posicao"></div>
        <input type="text" name="teclado" readonly>                      
        <div name="buffer"></div>                       
        <input type="text" id="txt">
        <div name="posicaoTime"></div>
        <div name="tempo"></div>  
        <h3 style="font-size: 30px;"></h3>
        <h4></h4>

    </body>                          
   <script type="text/javascript">       
       
        var dados   = new Array();       
        var time    = new Array();
       
        var tempoFinal;
        var tempoInicio;
        var tempo;
       
        var valor   = Number(0);               
        var a       = 1;
        var posicao = 0;
        var x       = 0;
       
       
        function startCount(){           
            $('#txt').val(a);
            a = a + 1;   
            x = setTimeout("startCount()",(140));                                               
        }

        function stopCount(){
            clearTimeout(x)
        }       
       
        function tochar(AsciiNum){
            return String.fromCharCode(AsciiNum)

        }
       
        function buffer(entrada){                              
            posicao         = dados.length;                       
            dados[posicao]  = entrada;            
           
            posicaoTime = time.length;
            time[posicaoTime] = a;           
           
            var string     = "";                                               
            var stringTime = "";            
            var chars      = "";


            $('div[name="posicao"]').html("Posição: " + posicao);                                                     
            $('div[name="posicaoTime"]').html("PosiçãoTime: " + posicaoTime);  

            if(dados.length >= 6){

                tempoInicial = time[0];
                tempoFinal   = time[time.length-1];
                tempo        = tempoFinal - tempoInicial;                       

                if(tempo <= 1){
                    $('h3').html("Você usou o leitor = " + tempo);                                       
                }else{
                    $('h3').html("Você usou o teclado = " + tempo);                   
                }   
            }else{
                $('h3').html("");
            }                  
                      
            $.each(dados, function(index, value) {                                                                
                    if(value==9){
                        dados.length = 0;
                        time.length  = 0;
                        $('input[name="teclado"]').val("");                   
                    }else{
                        string = string.concat(value);     
                        chars  = chars.concat(tochar(value));

                    }
                    $('div[name="buffer"]').html(string);
                    $('h4').html("Código: " + chars);               
            });        
           
            $.each(time, function(index, value) {                                
                stringTime = stringTime.concat(value);
                $('div[name="tempo"]').html(stringTime);
            });                       
        }               
       
        $('input[name="teclado"]').keydown(function(e) {                                                            
            if((e.keyCode == 17) || (e.keyCode == 16) || ((e.keyCode >= 65) && (e.keyCode <= 90))){
                $(this).val('');                                                  
                alert("Nada disso espertinho");                      
            }else{                               
                buffer(e.keyCode);                       
            }
        });               
               
        $(document).ready( function(){

            $('input[name="teclado"]').focus();
            startCount();            
        });               
       
        $('#txt').focus( function(){
            $('input[name="teclado"]').focus();
        });
    </script>     
</html>
======================================


2011/9/29 Tiago Pastorello <ti...@vinteum.com>

Jober

unread,
Sep 29, 2011, 1:32:58 PM9/29/11
to list...@googlegroups.com
botão direito. colar no caso de ter mouse não conta?

Tiago Pastorello

unread,
Sep 29, 2011, 2:41:39 PM9/29/11
to list...@googlegroups.com
Jober, por isso utilizei o campo como "readonly". Não é possível colar utilizando o mouse.

Detalhe, notei que ao ler um código de barras muito grande tipo 13, 15 digitos o leitor demora um pouco mais para enviar os dados, e nessa configuração aponta como informado pelo teclado.

Nesse caso devemos informar um tempo maior para reconhecer como leitor.
Como no meu caso os códigos são de 6 números apenas, ainda consigo reduzir mais o tempo.

att;

2011/9/29 Jober <jober.ca...@gmail.com>
Reply all
Reply to author
Forward
0 new messages