python读取usb扫码枪数据_vue扫码枪input接收数据
1.使用場景
vue 項目, 需要用掃碼槍完成獲取二維碼中內容并進行處理的功能, 掃碼槍就是普通那種,先找到一個有焦點的input,然后掃碼槍工作,將掃描到的信息錄入到input中,必須要有焦點。
打開modal,后input自動聚焦,出現焦點(就是那個一閃一閃的杠杠)。
點擊其他位置的時候焦點丟失,然后立即回來,防止用戶誤點擊后,再掃碼,找不到焦點就得不到數據。
2.代碼
title="訂單詳情"
@cancel="handleCancel">
v-model="scanData"
style=""
@blur="inputblur()" /> {{scanData}}
export default {
name: 'OrderScan',
props: {
value: {}
},
data () {
return {
scanData: ''
}
},
computed: {
visible () {
return this.value
}
},
methods: {
// 初始獲取焦點
keyPress () {
// nextTick 針對DOM 沒有渲染出現Undefined問題
this.$nextTick(() => {
this.$refs.inputdata.focus()
})
},
handleCancel () {
this.$emit('input', false)
},
// 失去焦點
inputblur () {
let that = this
// FireFox 和 IE 失去焦點,blur直接執行focus 不會生效,加個延時
setTimeout(() => {
that.$refs.inputdata.focus()
}, 10)
}
},
watch: {
// 監聽Modal狀態,當Modal 打開,文本框焦點存在
visible (val) {
if (val) {
this.keyPress()
}
}
},
mounted () {
}
}
3.踩坑點
1.用了一個Modal 層,默認有焦點,當Dom 沒有渲染 this.$refs.inputdata.focus() 會報Undefined,利用vue 里面nextTick() 解決。
2.當失去blur焦點后,再立即回來focus,發現不生效了,據高手說 FireFox 和IE, focus 要在 blur 之前,我用的是FireFox,focus 加個延遲解決這個問題。
總結
以上是生活随笔為你收集整理的python读取usb扫码枪数据_vue扫码枪input接收数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 冒泡排序的三种写法_冒泡排序的
- 下一篇: 计算机类说课比赛视频,全国“xx杯”计算