Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

303
Views
Cómo capturar pulsaciones de teclas de código hexadecimal de código de barras en una etiqueta de entrada

Tengo un escáner de código de barras Datalogic Memor10 que se parece mucho a un teléfono Android, excepto que además tiene un escáner de código de barras en la parte delantera. El escáner de código de barras se puede activar presionando una tecla en el costado del Memor10. También tiene una característica que llama Keyboard Wedge que afortunadamente está habilitada de forma predeterminada, ya que no pude averiguar cómo cambiar su complicada configuración. Aparentemente, Keyboard Wedge hace que cualquier código de barras escaneado también se escriba como pulsaciones de teclas; para que, por ejemplo, cuando tenga una etiqueta de input en una aplicación web, escriba el código de barras en esa entrada como pulsaciones de teclas.

Esto funciona muy bien para códigos de barras simples, sin embargo, el código de barras que me gustaría escanear es un código de barras de licencia de conducir de Sudáfrica que está encriptado con encriptación RSA y, por lo tanto, las pulsaciones de teclas devueltas podrían ser cualquier carácter de byte. Esto es un problema, ya que las pulsaciones de teclas como Tab e Enter dejarían el campo de entrada o enviarían de forma predeterminada.

La etiqueta de formulario incluida es solo para evitar el envío de formularios nativos de Oracle Apex.

Intenté sin éxito evitar esto y solo obtuve los códigos de bytes como caracteres hexadecimales con una pantalla de entrada simple en Oracle Apex. Mi código Javascript/jQuery/HTML es actualmente el siguiente:

Región de contenido estático:

 <form method="POST" action="javascript:void(0);"> <input type="text" id="barcode" name="barcode"> </form>

Al cargar la página:

 /* $("#barcode").on('keyup', function(e) { console.log(e.keyCode.toString(16)); e.preventDefault(); }); */ $("#barcode").keypress(function(event) { console.log(event.which.toString(16)); event.preventDefault(); });

Sin embargo, esto no funciona bien, ya que Tab aún deja el campo de entrada e Enter funciona la primera vez y luego deja de funcionar, solo para comenzar a funcionar nuevamente si presiona otra tecla en el medio. No estoy seguro de qué otros códigos de bytes podrían causar problemas. ¿Qué código puedo usar para capturar con éxito la cadena larga de códigos de bytes enviados como pulsaciones de teclas a la etiqueta de entrada por el escáner de código de barras Memor10? ¿O hay alguna otra forma de lograr esto? Me gustaría que esta fuera una aplicación web y no una aplicación nativa de Android.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El evento de keypress de tecla se activa cuando se presiona el valor de un carácter . Además, está en desuso. Debe usar el evento keydown , que se activa para todas las teclas.

 <form method="POST" action="javascript:void(0);"> <input type="text" id="barcode" name="barcode"> </form> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> /*$("#barcode").on('keyup', function(e) { console.log(e.keyCode.toString(16)); e.preventDefault(); });*/ $("#barcode").on('keydown',function(event) { console.log(event.which.toString(16)); event.preventDefault(); }); </script>

Este primer fragmento te ayudará a evitar que el tabulador cause daños.

Luego, para ver si hay problemas con otros códigos clave, escribí un script que activará un evento para todos los códigos clave del 0 al 256.

 $("#barcode").on('keydown',function(event) { console.log(event.keyCode.toString(16)); event.preventDefault(); }); const el = document.getElementById('barcode') for (let i = 0; i < 256; ++i) { el.dispatchEvent(new KeyboardEvent('keydown',{'keyCode':i})); }
 <form method="POST" action="javascript:void(0);"> <input type="text" id="barcode" name="barcode"> </form> <script src="https://code.jquery.com/jquery-3.6.0.slim.min.js" integrity="sha256-u7e5khyithlIdTpu22PHhENmPcRdFiHRjhAuHcs05RI=" crossorigin="anonymous"></script>

Parece funcionar. Ahora puede reunir todas las pulsaciones de teclas en una matriz para recomponer su código de barras.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!