uniapp监听扫码枪键盘事件|无输入框式监听

这篇具有很好参考价值的文章主要介绍了uniapp监听扫码枪键盘事件|无输入框式监听。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一般的扫码枪通过USB或蓝牙连接手机或电脑,充当的是一个外接设备。当扫码后,扫码枪会自动识别内容,然后向连接的电脑或手机发送键盘事件keydown或keyup。

input输入框式

如果页面上有input输入框就很简单,直接聚焦input,然后扫码,input框会自动填充内容,并自动产生回车事件,代码只需处理回车事件即可。

<template>
    <input v-model="inputString" @confirm="onConfirm" />
</template>

<script setup>
import { ref } from "vue"
const inputString = ref("")
const onConfirm = () => {
    console.log('输入的值为', inputString.value)
}
</script>

以上代码,h5、App都适用。

无输入框式

没有input框时,就需要监听页面的键盘事件。h5可以使用document.keyup来监听,但是app里没有document,只能使用plus.key来监听。处理逻辑一样,只是监听方式不一样。

同时兼容H5和APP的用法

<template>
    <view>监听到的内容:{{inputString}}</view>
</template>

<script setup>
import { ref } from "vue"
import { onLoad, onShow, onHide, onBackPress, onUnload } from "@dcloudio/uni-app";
const inputString = ref('')
const keyCodeCache = ref([])
const inputCache = ref('')
const onConfirm = (code)=>{
    console.log('拿到的code', code);
    // 此处写我们自己的逻辑
}
const keypress = (e) => {
    if (e.keyCode === 66 || e.key =='Enter') {
        inputString.value = inputCache.value;
        onConfirm(inputString.value)
        inputCache.value = '';
    } else {
        inputCache.value += e.key
    }
}


onLoad((options) => {
    // #ifdef APP-PLUS
    plus.key.addEventListener("keyup", keypress);
    // #endif 
    // #ifdef H5
    document.addEventListener("keyup", keypress);
    // #endif
})
onUnload(()=>{
    // #ifdef APP-PLUS
    plus.key.removeEventListener("keyup", keypress);
    // #endif
    // #ifdef H5
    document.removeEventListener("keyup", keypress);
    // #endif
})
onHide(()=>{
    // #ifdef APP-PLUS
    plus.key.removeEventListener("keyup", keypress);
    // #endif
    // #ifdef H5
    document.removeEventListener("keyup", keypress);
    // #endif
})
onBackPress(()=>{
    // #ifdef APP-PLUS
    plus.key.removeEventListener("keyup", keypress);
    // #endif
    // #ifdef H5
    document.removeEventListener("keyup", keypress);
    // #endif
})
</script>

实际运行时,可能出现键盘的key和keyCode不兼容问题,不同的设备对应的键盘keyCode可能也不一样,首先要设置扫码枪的键盘模式,然后做一层转换。
下面的扫码枪设置为US Keyboard的转换部分逻辑文章来源地址https://www.toymoban.com/news/detail-507918.html

import keymap from './keymap'
const keypress = (e) => {
    if (e.keyCode === 66 || e.key =='Enter') {
        inputString.value = inputCache.value;
        inputCache.value = '';
        onConfirm(inputString.value)
    } else {
        inputCache.value += keymap[e.keyCode] || ''
    }
}
// keymap.js 以下来源网络收集,不同的设备对应的keyCode可能不同
export default {
	"7": "0",
	"8": "1",
	"9": "2",
	"10": "3",
	"11": "4",
	"12": "5",
	"13": "6",
	"14": "7",
	"15": "8",
	"16": "9",
	"29": "A",
	"30": "B",
	"31": "C",
	"32": "D",
	"33": "E",
	"34": "F",
	"35": "G",
	"36": "H",
	"37": "I",
	"38": "J",
	"39": "K",
	"40": "L",
	"41": "M",
	"42": "N",
	"43": "O",
	"44": "P",
	"45": "Q",
	"46": "R",
	"47": "S",
	"48": "T",
	"49": "U",
	"50": "V",
	"51": "W",
	"52": "X",
	"53": "Y",
	"54": "Z",
	"55": ",",
	"56": ".",
	"59": "",
	"69": "-",
	"70": "=",
	"81": "+"
}

到了这里,关于uniapp监听扫码枪键盘事件|无输入框式监听的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 监听键盘事件和鼠标事件

    键盘监听: python有一个很强大的键盘监听库,那就是 keyboard 。他的父类库 pynput 可以实现鼠标监听 可以自行下载 pip install keyboard | pip install pynput 代码参考

    2024年02月13日
    浏览(42)
  • C#全局监听键盘事件

    C#如何获取键盘和鼠标处于空闲状态下的时间  可以通过windows api 函数 GetLastInputInfo或者全局钩子HOOK来实现 用 GetLastInputInfo 写(键鼠空闲15分钟自动弹出一个页面) 新建windows 应用程序项目 用HOOK钩子来实现 创建钩子类 调用 方法

    2024年02月11日
    浏览(39)
  • 前端监听键盘事件

    需求就如题所示 在react中监听如下: keydown事件是键盘的相关事件,我们主动去监听一下,然后别忘了去销毁, 然后有个写法: 在useEffect中使用return返回了一个清除监听的函数,实践了一下return的执行时机,发现是在页面切走的时候,也就是说,当前的组件被销毁的时候执

    2024年02月12日
    浏览(35)
  • vue监听鼠标与键盘事件

     效果:  

    2024年02月16日
    浏览(40)
  • 基于Vue3实现扫码枪扫码并生成二维码的代码解析

    在本文中,我们将介绍如何使用Vue3实现扫码枪扫描条形码或二维码,并将其转换为二维码的过程。这个过程将涉及到以下步骤: 在Vue3项目中安装和导入 vue-qrcode-reader 插件。 创建一个Vue3组件,用于渲染二维码。 在组件中实现扫码枪扫描条形码或二维码的逻辑。 将扫描到的

    2024年02月09日
    浏览(59)
  • 微信小程序input监听键盘完成事件、回车事件

    微信小程序中,输入框输入内容,需要输入完成后点击键盘完成事件后触发搜索 bindconfirm=“事件名称”

    2024年02月14日
    浏览(46)
  • js之 事件监听(鼠标、焦点、键盘、文本)

    目标 :能够给DOM元素添加事件监听 什么是事件 :事件是在编程时系统内发生的动作或者发生的事情,比如用户在网页上单击一个按钮 什么是事件监听 :        就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为 绑定事件或者注册事

    2024年02月14日
    浏览(35)
  • Java键盘事件处理及监听机制解析

    Java事件处理采用了委派事件模型。在这个模型中,当事件发生时,产生事件的对象将事件信息传递给事件的监听者进行处理。在Java中,事件源是产生事件的对象,比如窗口、按钮等;事件是承载事件源状态改变时的对象,比如键盘事件、鼠标事件、窗口事件等等。当事件发

    2024年02月13日
    浏览(37)
  • flutter监听键盘输入做出反应

    2024年02月10日
    浏览(42)
  • flutter 调出键盘和监听输入

    调出键盘: 监听按键: 完整代码

    2024年02月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包