状态的状zhuang
状态的状zhuang
  • 发布:2020-11-25 22:33
  • 更新:2022-08-24 18:54
  • 阅读:3835

关于input在 PDA环境中扫描,无法清空input的情况

分类:uni-app

开发PDA实现扫描录入,由于uniapp不支持原生input的keydown事件,所以无法判断回车键。

这边使用的是 @confirm事件,实现回车提交,但是测试中遇到了问题,每扫描几次就会间隔性出现 input未被清空的情况,就会导致和下次扫描数据一起提交。实际测试发现如果使用软键盘提交回车没有出现这种情况,怀疑可能扫描录入的数据填充的比较快。因为这个问题研究了很多天,并在社区搜索相关解决方案,目前碰到的最妥善的方法可能就是监听广播,直接原生获取扫描数据。
但是根据大家的描述来看,广播模式似乎只支持 android 8.0 以上的设备,而我测试的PDA版本为5.1,在设置中也确实没有找到相关设置,如果使用该方式可能需要更换设备,所以广播应为最后的处理手段。实际上采集录入的最佳方式还是直接扫描到录入框,但是受到框架的一定限制让我感到十分无奈。

不过就在刚才我突然灵机一动,既然input无法更新视图,清空录入框中的数据,那我为什么不使用 v-if 将他们重新渲染呢?最终经过测试,完美实现预期效。

     <view v-if="bool">  
        <input class="input" @confirm="confirm1" v-model="value" key="1" auto-focus="autofocus" />  
    </view>  
    <view v-else>  
        <input class="input" @confirm="confirm1" v-model="value" key="2" auto-focus="autofocus" />  
    </view>  

当然目前只是通过的测试,无法保证在后面实际应用中会导致什么异常,先将方法分享出来,如果有异常我再继续在帖子下面回复,如果大家有更好的方式也请分享给我一下,十分感谢!

附件我上传了测试的视频

1 关注 分享
pure111

要回复文章请先登录注册

7***@qq.com

7***@qq.com

扫描快的时候,还是有重叠的
2021-04-22 19:21
状态的状zhuang

状态的状zhuang (作者)

已经可以使用了,但是因为闪烁软键盘感觉体验不怎么好,其实采用 plus.nativeObj.view的drawinput效果应该很好,但是这个原生input居然没有提供设置输入值的方法,我不知道如何清空上次输入的值
2021-02-03 10:29
s***@163.com

s***@163.com

整了好久,没有解决。采用你的方式,可以达到预期效果。thank you!!!
2021-01-04 18:24
1***@qq.com

1***@qq.com

代码提供一下
2020-12-16 19:48
状态的状zhuang

状态的状zhuang (作者)

目前遇到了一个问题,因为我是使用的v-if,每次扫描重新渲染的的组件,造成部分设备重新渲染时导致焦点丢失,如果隐藏软键盘也会失去焦点,无法扫描。目前得到了一个解决方案
<input :auto-blur="false" />
:auto-blur="false" 可以使软键盘隐藏的清空下不会丢失焦点,也可以解决重新渲染时导致焦点丢失的问题。目前是可以勉强使用了,只是扫描时会导致软键盘不停的显示隐藏造成闪烁,不确定这样的操作会带来什么后续问题。还是希望有办法直接不显示软键盘。(因为我看到原生的扫描软件,都是默认不显示软键盘,只有在你手触摸了input才会显示软键盘。)
2020-11-26 12:42