IOS下使用bindinput事件,输入第一个字符后键盘就被收回了
发布于 7 年前 作者 zluo 7204 次浏览 来自 问答

iOS系统下,bindinput事件获取输入框值,每次只输入一个字符键盘就消失,需要重新打开键盘。

部分代码如下:

<view  wx:for="{{drugs}}" wx:key="id" wx:for-index="idx" >
//省略其余代码
<input  type="number" bindinput="iptNumChange" data-idx="{{idx}}"/>

</view>

iptNumChange: function (e) {

    let drugs = this.data.drugs
    let idx = e.currentTarget.dataset.idx
    drugs[idx].num = e.detail.value
    this.setData({
      drugs
    })
  }

当删除iptNumChange 事件中的setData()  后,键盘输入恢复正常。

请问怎么解决?

ps:我的程序中有其他页面bindinput中同样有调用setData(),但并没有出现输入一个字符后自动收起键盘的情况。

3 回复

尝试过把setData()中的drugs复制一份来循环,问题并没有解决。也尝试过setData()中的data不是drugs而换成另外任何data中有定义的参数,但只要iptNumChange 中存在setData()就会有问题…

有可能是

this.setData({
      drugs

    })


这个操作会导致页面重绘,你不要用drugs来循环或者换一个data来维护数据

我感觉应该就是这个问题,你仔细找找,看看wxml,看看是不是哪个data有变换,或者你现在循环的那段区域有data变换

回到顶部