uni-app nvue下的input 键盘回车和扫码无法触发 confirm。pda环境,采集带有回车无法触发confirm,硬件盘回车也无法触发,只能使用软键盘

uni-app nvue下的input 键盘回车和扫码无法触发 confirm。pda环境,采集带有回车无法触发confirm,硬件盘回车也无法触发,只能使用软键盘

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:3.1.2

手机系统:Android

手机系统版本号:Android 6.0

手机厂商:PDA

手机机型:PDA

页面类型:nvue

打包方式:云端

示例代码:

<view class="inputborder">  
    <input ref="input" class="input" v-model="value" @confirm="confirm1"  
     :auto-blur="false" :focus="true" :confirm-hold="true" :placeholder="placeholder"  
     @focus="hideKeyboard" @click="clickinput" confirm-type="send" />  
</view>  

操作步骤: 1

预期结果: 1

实际结果: 1

bug描述: nvue下的input 键盘回车和扫码无法触发 confirm。pda环境,采集带有回车,无法触发confirm,硬件盘回车也无法触发,只能使用软键盘

开发PDA心真的好累


更多关于uni-app nvue下的input 键盘回车和扫码无法触发 confirm。pda环境,采集带有回车无法触发confirm,硬件盘回车也无法触发,只能使用软键盘的实战教程也可以访问 https://www.itying.com/category-93-b0.html

51 回复

1.vue的 input pad连续扫码会失去焦点,2.nuve pad 无法触发confirm事件。3有焦点无软盘的体验很差。react-native 没有这三个问题。希望官方提高pad扫描体验

更多关于uni-app nvue下的input 键盘回车和扫码无法触发 confirm。pda环境,采集带有回车无法触发confirm,硬件盘回车也无法触发,只能使用软键盘的实战教程也可以访问 https://www.itying.com/category-93-b0.html


react-native 很方便的解决。uniapp 还需$nextTick ,还不稳定

PDA应用场景只适合通过input,广播和键盘事件体验都不好。原本使用vue页面但是软键盘太频繁才尝试使用nvue,结果无法触发confrim

您好,这个问题最后解决了吗,怎么解决的

回复 大佬救命:官方没有解决

前后几个月都在研究pda,本来指望nvue实现扫码的完美效果 ,没想到回车符居然不会触发@confirm , @input 也不接受收回车。项目现在是做不了。

试下手机设备是否正常。

正常的,就是扫码的回车无法识别,所以无法除非 confirm ,Vue input的confirm是可以的

手机设备没有采集器,只能用过软件盘,而软键盘完成是正常的

回复 状态的状zhuang: 模拟器测试使用硬件键盘回车键是可以触发@confirm 你可以pc模拟器试下

回复 DCloud_Android_ST: 主要是真机不可以,我测试Vue页面是可以的

回复 状态的状zhuang:我说的是nvue 你真机不行我也不清楚原因 至少硬件键盘是可以的

回复 DCloud_Android_ST: 你外接个键盘试试

回复 DCloud_Android_ST: 那好吧,我也不知道什么原因,反正就是vue页面没问题,nvue就不行,谢谢您了,我再研究一下其他开发方式吧。

回复 DCloud_Android_ST: 软键盘隐藏后, PDA的硬键盘按回车也是无效的,但是如果显示了软键盘,再按回车就有效了。

真的请求官方对PDA有些小小的考虑,我看社区有很多人搞PDA ,不需要做什么太多的改动,只需要 input可选获取焦点时,可选是否显示软键盘。和nvue下的 input的@confirm可以正常识别扫描回车符触发即可。 实在不行收点费用也行,只要价格合理,真的没办法了。

目前没有相关设备 我们这边都是使用手机测试。这个问题我们看看吧

回复 DCloud_Android_ST: 感激呀,谢谢谢谢

回复 DCloud_Android_ST: 可以测试PDA试试的,现在做PDA的也不少呢

回复 DCloud_Android_ST: PDA真不行,目前是NVUE无法捕获回车键,除非软键盘

回复 DCloud_Android_ST: 这个不是手机的问题啊,就是NVUE无法捕获回车事件

回复 1***@qq.com: 是呀,是呀。

扫描使用Input是最完美的方式,至于广播和键盘监听,实际应用过程中还是存在很多问题的

let previous = 0 input1() {
if (this.value.length - previous > 1) {
previous = 0;
let val = this.value;
this.$nextTick(() => {
this.value = “”
})
this.input(val);
} else {
previous = this.value.length;
}

    },  

回车是无法解决了,但是我换了一种方式实现了提交

能麻烦详细讲解一下吗 这段代码没怎么看明白

回复 Zzz1012: 就检查@inpout的字符变化,一般输入都是一个字符一个字符的,扫描的才会多个字符

回复 1***@qq.com: 怎么用呢 我也遇到这个问题 好头疼

换个输入 法。百度输入法会把扫描枪后面跟的回车删除掉。我用的新大陆的MT10吧。用搜狗就成。

换个输入 法。百度输入法会把扫描枪后面跟的回车删除掉。我用的新大陆的MT10吧。用搜狗就成。

和输入法没有关系呢,我不开软键盘的情况下,硬件回车都无效的。扫描就更识别不了回车了

采集录入方式是录入到编辑框,不是模拟键盘呢,所以和输入法没有关系。

pda使用input不显示键盘的解决方案有了https://ask.dcloud.net.cn/article/39723

请问是哪个哈

回复 状态的状zhuang: 可以看链接内容

解决掉了吗?我现在也遇到这个问题了. 我是因为可能数据过多所以改成了nvue模式 现在发现pda不能触发回车事件

私信下我 提供联系方式

我遇到了这个问题并解决掉了,结束符设置为CR结束即可接收到confirm事件

如果设置关闭软键盘的话就无用了,最好的方法就是onLoad的时候用plus.key.addEventListener监听每一个按键,设置一个全局变量,有结束就处理结果,没有结束增加字符串

请问最后解决了嘛

回复 DCloud_Android_ST: 你好,怎么解决这个问题,pda 扫码无法调起回车键的问题

你好 我现在也遇到了同样的问题 请问大佬最后是通过什么方式 隐藏软键盘的同时,输入框聚焦的呢

你好,我也遇到同样的问题,使用商米L2带有扫描头的PDA,使用nvue的input组件,无法触发回车,@conform无效, 设置焦点无效, @change这个更加无效。

我现在都有点怀疑uniapp了,到底行不行?同一个nvue文件,使用input可以接收全部的扫描内容,但是使用easyinput就不行,扫描内容后面一小部分总是接收不到。而且,官方文档上的bug特别多,解释和描述不清楚,示例代码里的bug也多。

我真裂开,用 nvue 重构到一半才发现 PDA 这个没法触发。。。。。

+1 我都重做完了,发现不能用

nvue中手动点击软键盘回车可以触发,但是扫描内容的中带一个回车的后缀就没办法触发confirm事件,相同的内容在vue页面可以正常使用

我搞了两天还是没解决,软键盘隐藏的情况下无法触发回车事件,也监听不到回车按键

曲线救国了TMD。用防抖函数 1000ms后触发。扫码枪输入速度很快。1000ms后提交。

回复 Dummer: 用什么方法加防抖函数呢

回复 代码搬运工2: 自己写一个防抖函数就可以了。

这是一个在nvue页面中input组件confirm事件触发异常的问题,主要出现在PDA设备上。根据你的描述,硬件键盘回车和扫码枪输入的回车都无法触发confirm事件。

可能的原因和解决方案:

  1. PDA设备硬件键盘事件可能未被正确捕获,可以尝试监听keypress/keydown事件作为替代方案:
<input @keypress="handleKeyPress" />

handleKeyPress(e) {
    if(e.keyCode === 13) { // 回车键
        this.confirm1();
    }
}
  1. 对于扫码枪输入,可以尝试使用定时器检测输入变化来模拟confirm事件:
let timer;
watch: {
    value(newVal) {
        clearTimeout(timer);
        timer = setTimeout(() => {
            if(newVal.includes('\n')) { // 扫码枪通常以回车结束
                this.confirm1();
            }
        }, 100);
    }
}
回到顶部