Pereiti prie turinio

Barcode Scanner Emulator

Skaitytuvas veikia užrašinėje, bet ne POS

Tai viena dažniausiai pranešamų brūkšninių kodų problemų, ir beveik visada skaitytuvas bei jungtis yra tvarkingi — klaida yra tame, kaip programa apdoroja klaviatūros įvestį.

Problema

Nuskaitymas į paprastą teksto rengyklę kaskart duoda teisingą reikšmę, bet nuskaitymas į POS sistemą, žiniatinklio programą ar vidinį įrankį neduoda nieko, duoda dalinę įvestį arba neteisingą elgseną.

Galimos priežastys

  • Tikslinis laukas nuskaitymo metu neturi klaviatūros fokuso arba fokusas yra ne įvesties elemente
  • keydown apdorotuvas iškviečia preventDefault() taip, kad užblokuoja simbolių įvedimą
  • Programa remiasi paste arba input įvykiais, kurių skaitytuvo klavišų paspaudimai natūraliai nesukelia taip, kaip tikitės
  • Įvesties kaukė arba tikrinimo reguliarusis reiškinys atmeta galiojantį nuskaitytos apkrovos simbolį
  • ENTER/TAB priesaga sukelia nenumatytą veiksmą (per anksti pateikia formą, uždaro modalinį langą, pereina kitur)
  • Nuskaitymas vyksta greičiau, nei sulėtintas ar apribotas įvesties apdorotuvas spėja užregistruoti kiekvieną klavišo paspaudimą

Diagnostikos eiga

  1. Toje pačioje naršyklėje atidarykite klaviatūros įvykių testerį ir nuskaitykite brūkšninį kodą. Jei čia kiekvienas simbolis užregistruojamas teisingai, naršyklė ir operacinė sistema įvykius gauna gerai, todėl klaida yra programos įvykių apdorojime.
  2. Patikrinkite, ar tikroje darbo eigoje įvesties laukas sufokusuotas prieš pat nuskaitymą, o ne tik tada, kai testuodami jį spustelite ranka.
  3. Atidarykite naršyklės DevTools konsolę ir patikrinkite, ar nuskaitymo metu nemetamos JavaScript klaidos — klaida apdorotuvo viduryje gali tyliai sustabdyti tolesnių klavišų apdorojimą.
  4. Laikinai pašalinkite įvesties kaukę, tikrinimą ar delsos logiką ir testuokite iš naujo, kad išskirtumėte, kuris sluoksnis meta įvestį.
  5. Patikrinkite, ar programa klauso keypress (nebenaudojamas ir kai kuriems klavišams nepatikimas), o ne keydown/keyup.

Kaip taisyti

  • Užtikrinkite, kad tikslinis laukas būtų programiškai sufokusuotas, kai darbo eiga tikisi nuskaitymo (pavyzdžiui, iškart pridėjus eilutę)
  • keypress klausytojus pakeiskite keydown/keyup, nes keypress nebenaudojamas ir kai kuriuos klavišus apdoroja nenuosekliai
  • Peržiūrėkite visus preventDefault() iškvietimus klaviatūros apdorotuvuose, kad jie neblokuotų teisėtų simbolių klavišų
  • Atlaisvinkite įvesties kaukes ir tikrinimą, kad priimtų visą simbolių diapazoną, kurį gali sukurti jūsų simbologijos, ir tikrinkite surinktą reikšmę, o ne atskirus klavišų paspaudimus
  • Skaitytuvo priesagą derinkite su tuo, ko tikisi forma (žr. ENTER ir TAB priesagas)

Susiję įrankiai

Klaviatūros įvykių testeris · Brūkšninio kodo įvesties testeris