需求描述:
有m行,每行n=5个input,要求每个input输入4个数字后将焦点自动移到下一个input。
实现方式:
每个input的id按数字序号定义,1、2、3......
每个input的focus值按条件获取true或false
wxml代码
<view class="inputArea bg-white">
<block wx:for="{{lineNumber}}" wx:for-item="line" wx:for-index="lineIndex" wx:key="lineIndex">
<view class="inputRow">
<label class="text-gray">{{lineIndex<9?0:''}}{{(lineIndex+1)}}.</label>
<block wx:for="{{cellNumber}}" wx:for-item="cell" wx:for-index="cellIndex" wx:key="cellIndex">
<wux-field name="input{{5*lineIndex+cellIndex+1}}" class="solid-bottom text-center text-df">
<wux-input focus="{{inputID==(5*lineIndex+cellIndex+1)?true:false}}" id="{{5*lineIndex+cellIndex+1}}" type="number" maxlength='4' bind:change="onInputChange"/>
</wux-field>
</block>
</view>
</block>
</view>
其中关键代码是:
focus="{{inputID==(5lineIndex+cellIndex+1)?true:false}}" id="{{5lineIndex+cellIndex+1}}"
js代码
// input中输入数字时
onInputChange: function(e){
if(e.detail.value.length==4) {
let currentID = e.currentTarget.id // 当前input id
this.setData({
inputID: parseInt(currentID)+1 // next input id
})
}
},
完美!
网友评论