输入框只允许扫码枪输入

实现输入框只允许扫码枪输入。
首先要先了解扫码枪是怎么输入条码的。
本质:扫码枪扫码相当于是模拟键盘输入,即模拟输入框keydown、keyup事件。扫码结束后扫码枪会已"Enter"键结尾。(注:不同硬件设备可能会不一样,亲测有的扫码枪会以"Enter"结尾,有的没有"Enter",可能是设备不同或是硬件设置问题)。
现在我们需要判断人工输入与扫码枪输入,因为扫码枪输入是模拟键盘输入,扫码枪两次触发keydown、keyup事件时间间隔小于人工输入,所以我们可以给输入框设置keyup事件(这里不使用keydown事件是因为用户可能按住键盘不松),获取两次keyup的时间,判断时间间隔大于某个值即判定为人工输入,清空输入框。

<vxe-input

v-model=“Code”

placeholder=“请输入条码”

clearable

:disabled=“barDisable”

@paste.native.capture.prevent=“prohibit”

@copy.native.capture.prevent=“prohibit”

@cut.native.capture.prevent=“prohibit”

@keyup=“CodeKeyUp”

/>

CodeKeyUp () {
// 设一个数组timearr[0,0],判断输入Code长度是奇数还是偶数,并将其时间存于timearr中

if (this.Code.length % 2 !== 0) {

this.timearr[0] = new Date().getTime()

} else {

this.timearr[1] = new Date().getTime()

}

// 当输入第二位时判断两次输入的间隔,判断是否为手动输入,间隔过长清空值

if (

this.Codelength > 1 && Math.abs(this.timearr[1] - this.timearr[0]) > 40

) {

this.Code = ‘’

this.timearr = [0, 0]

}

}
这样就禁止了键盘输入,然后将输入框的粘贴功能禁用,防止用户直接粘贴输入。输入框设置paste事件,直接retuen false即可。
prohibit () {
      return false
},

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值