只针对激光扫条形码 不能触发pda打开摄像头
<input
type="text"
v-model="goodName"
:focus="isFocus"
@blur="blur"
@confirm="confirm"
@input="input" placeholder="请输入商品名称或商品编号" class="patientName" />
这里一定要用v-model的方法去绑值 不要用:value 方便做扫码后清除数据的功能
默认 “isFocus”:true 这样进来可以触发焦点事件可以直接扫(focus 属性, 只要他为 true 我们就可以自动唤起弹窗)
@confirm方法触发扫码后你需要操作的事件方法 如果扫码后需要调用接口取数据的话就用这个方法
@input 可以捕捉你在input框内输入的内容
@blur 失去焦点后重新设置焦点 例如你扫后可以继续扫
input (e) {
this.goodName = e.detail.value;
this.isFocus = false;
},
confirm (e) {
this.addScanGoods();
//这里扫码后新增数据
},
focus () {
setTimeout(function(){
uni.hideKeyboard();//隐藏软键盘:隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作
// plus.key.hideSoftKeybord();//隐藏软键盘:隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作
},250);
},
blur () {
console.log('失去焦点重新设置焦点');
this.isFocus = true;
},
失焦问题
1.设置了 输入框的聚焦属性,但扫码一次后就会失去焦点输入框失去焦点时重新在blur事件中重新设置焦点
2.点击页面上除了输入框的其他位置,也会导致输入框的失焦问题给整个页面的根节点设置点击事件,重新获取焦点
3.还需要在mainfest.json配置文件关闭沉浸式,否则无法获取焦点。
如果还是不行 可以在最外面再加一个view
<view class="" @tap="setFocus()"></view>
setFocus ()
{
console.log('重新获取焦点');
//alert('setfocus');
this.isFocus = false;
},