美文网首页
Vue中解决扫码枪在中文输入法下扫描乱码问题

Vue中解决扫码枪在中文输入法下扫描乱码问题

作者: 六寸光阴丶 | 来源:发表于2020-05-30 01:23 被阅读0次

写在前面

如果本文对您有所帮助,就请点个关注吧!

问题描述

今天项目上遇到反馈过来的问题:前端input输入去后台核对时,使用键盘输入核对成功,使用扫描枪输入核对失败。原因很明显:扫描枪扫出来的字符串肯定是错误的。

后续跟进反馈,中文状态下扫描枪出现这种问题。

大概猜测下,中文状态下扫描快递包裹,比如中通快递单号为:
ZT103838237398

首先说明下扫描枪的原理:完全模拟键盘输入!也就是说,扫描出来的字符串也是逐个进行输出,也是有键盘的所有监听事件的。

再看上面的快递单号:中文状态下”ZT1“会输出什么?

image.png

以上也只是猜测,因为没有实际的扫码枪。但是问题还是需要解决的。

解决思路

解决思路:不让输入中文!

<input type="text">

改为

<input type="password">

可以完全解决输入中文的问题,但是不能显示明文。再加入一个text的input框,用于显示输入,password涌入接收输入。监听input事件。具体代码如下:

<template>
  <div style="position: relative;">
    <input
      id="pad-input"
      v-model="value"
      :style="`width:${width}px;height:${height}px;`"
      type="password"
      autocomplete="off"
      @input="$emit('update', value)"
    >
    <input
      id="show"
      v-model="value"
      :style="`width:${width - 2}px;height:${height - 2}px;`"
      :placeholder="placeholder"
      type="text"
      disabled
    >
  </div>
</template>
<script>
export default {
  name: 'CodeInput',
  model: {
    prop: 'val',
    event: 'update'
  },
  props: {
    width: {
      type: Number,
      default: 240
    },
    height: {
      type: Number,
      default: 40
    },
    val: {
      type: String,
      default: ''
    },
    placeholder: {
      type: String,
      default: '使用扫码枪请将光标置于此框内'
    }
  },
  data() {
    return {
      value: this.val
    }
  },
  watch: {
    val: {
      immediate: true,
      handler(newVal) {
        this.value = newVal
      }
    }
  }
}
</script>
<style lang="scss" scoped>
$placeholder-color: rgb(192, 196, 204);
#pad-input {
  border: 1px solid #dcdfe6;
  border-radius: 5px;
}
#show {
  position: absolute;
  left: 1px;
  top: 50%;
  transform: translate(0, -50%);
  padding: 0 15px;
  background-color: #fff;
  color: #606266;
  font-size: 14px;
  border-radius: 4px;
  border: none;
  pointer-events: none;
}
input::-webkit-input-placeholder {
  color: $placeholder-color;
}
input::-moz-input-placeholder {
  color: $placeholder-color;
}
input::-ms-input-placeholder {
  color: $placeholder-color;
}
</style>

相关文章

  • Vue中解决扫码枪在中文输入法下扫描乱码问题

    写在前面 如果本文对您有所帮助,就请点个关注吧! 问题描述 今天项目上遇到反馈过来的问题:前端input输入去后台...

  • Form界面输入框修改输入法状态

    问题 出现过在系统为中文输入法的情况下二维码中有字母从而导致扫描仪扫码出中文的情况 方案 在要扫码输入的输入框中禁...

  • 基于 速达3000pro工业版 系统扫码制单的扫码枪设置说明。

    扫码枪品牌型号:得力无线一维扫码枪14881 初始条件(出厂设置下),搜狗中文输入法状态,并确保大写锁定没有开启。...

  • js获取扫码枪输入

    场景:扫码枪扫码,获取信息,js代码如何获取扫描信息呢? 原理:扫码枪输入会触发键盘输入事件。扫码枪输入的时间间隔...

  • Android使用AccessibilityService实现U

    android单屏机,通过扫码枪扫描二维码的场景非常多,扫码枪的种类也有蓝牙、USB、串口等等 目前USB的扫码枪...

  • 解决扫码枪中文输入法冲突问题

    今天被这个问题困扰了很久。当EditText类型为Text时,扫码枪输入的内容不正确。研究了一个下午,找到了解决方...

  • Android 二维码扫码枪内容识别

    项目中有一个扫码枪扫描二维码识别内容的需求,扫码枪其实相当于一个外接键盘,会把扫描二维码后识别的内容通过键盘的方式...

  • 扫码枪【1】: vue中扫码枪的运用

    扫码枪 一、扫码枪是干什么的? 顾名思义,它是来扫二维码的,如下所示,扫码枪连接电脑,把二维码的信息读出条码自动在...

  • vue扫码枪input接收数据

    1.使用场景 vue 项目, 需要用扫码枪完成获取二维码中内容并进行处理的功能, 扫码枪就是普通那种,先找到一个有...

  • 2019-06-28

    什么是物流扫描枪? 物流扫描枪,又叫物流数据采集器,物流扫码采集器或物流条码把枪,中转场/仓库数据采集,通过扫描快...

网友评论

      本文标题:Vue中解决扫码枪在中文输入法下扫描乱码问题

      本文链接:https://www.haomeiwen.com/subject/nqgqzhtx.html