likes
comments
collection
share

移动端如何在前端阻止input框获得焦点时手机键盘的弹出(实现仅能扫码枪读入数据,禁止手输)

作者站长头像
站长
· 阅读数 56

思路一、通过判断键盘按下弹起的时间差判断是否人为输入

一开始思路是想判别一下是人为输入还是扫码枪扫码输入,如果是人为输入则弹出提示并清空输入框内容

移动端如何在前端阻止input框获得焦点时手机键盘的弹出(实现仅能扫码枪读入数据,禁止手输)

移动端如何在前端阻止input框获得焦点时手机键盘的弹出(实现仅能扫码枪读入数据,禁止手输)

但是pc端时间差是100左右,移动端是15左右,接近扫码枪输入的速度,无法进行判别,只能另换一种思路

(鄙人技术浅薄不知道是什么原因,希望有大佬给我指点迷津)

思路二、直接禁止用户掉起键盘

参考了这篇文章,并稍做改进

(172条消息) 移动端如何在前端阻止input框获得焦点时手机键盘的弹出_移动端输入框自动获取焦点时禁止弹起键盘_雪松~的博客-CSDN博客

移动端如何在前端阻止input框获得焦点时手机键盘的弹出(实现仅能扫码枪读入数据,禁止手输)

  1. 刚点击时输入框变为只读,就不掉起键盘了,然后再让只读属性为false,焦点又回来了

移动端如何在前端阻止input框获得焦点时手机键盘的弹出(实现仅能扫码枪读入数据,禁止手输)·

  1. 用户点击输入框时,先让输入框失焦,跳出提示,再让输入框聚焦,此时又调用上1的方法,禁止掉起键盘

移动端如何在前端阻止input框获得焦点时手机键盘的弹出(实现仅能扫码枪读入数据,禁止手输)

  1. 禁止用户复制粘贴剪切

移动端如何在前端阻止input框获得焦点时手机键盘的弹出(实现仅能扫码枪读入数据,禁止手输)

1.效果

移动端如何在前端阻止input框获得焦点时手机键盘的弹出(实现仅能扫码枪读入数据,禁止手输)

移动端如何在前端阻止input框获得焦点时手机键盘的弹出(实现仅能扫码枪读入数据,禁止手输)

2.代码

 <van-field v-model="inputCode" type="password" label="" placeholder="扫码自动填入巡检码" ref="inputCode" @keydown="getDown"
          @keyup="getUp" @input="onChange" @focus="onfocus" :readonly="isRead"
          @click="stopKeyborad" oncut="return false" onpaste="return false" oncopy="return false"/>
    // 点击巡检码输入框
    stopKeyborad() {
      this.$nextTick(() => {
        this.$refs.inputCode.blur();
        Dialog.confirm({
          title: '注意!!',
          message: '请勿手动输入巡检码',
        })
          .then(() => {
            // on confirm
            this.$refs.inputCode.focus();
          })
          .catch(() => {
            // on cancel
            this.$refs.inputCode.focus();
          });
      });
    },
    // 巡检码输入框获取焦点
    onfocus() {
      this.isRead = true 
      
      setTimeout(() => {
        this.isRead = false
      }, 200);
    },
转载自:https://juejin.cn/post/7215095268610359352
评论
请登录