wxml:?
<view class="codeBox">
<view class="codeMain">
<view class="codeInp" catchtap="setFocus">
<view class="code">{{ code[0] ? '·' : '' }}</view>
<view class="code">{{ code[1] ? '·' : '' }}</view>
<view class="code">{{ code[2] ? '·' : '' }}</view>
<view class="code">{{ code[3] ? '·' : '' }}</view>
</view>
<input class="codeInpContent" type="number" maxlength="4" focus="{{code_isFocus}}" bindinput="getCode" />
</view>
</view>
?js:
Component({
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: {
code_isFocus: true, // 控制input 聚焦
code: [],
},
/**
* 组件的方法列表
*/
methods: {
//聚焦input
setFocus() {
this.setData({
code_isFocus: true
})
},
// 监测用户输入
getCode(e) {
this.setData({
code: e.detail.value
});
if (this.data.code.length == 4) { // 输入完成
}
},
}
})
wxss:
注意:input框不能用opacity0控制隐藏,手机测试会出现无法隐藏问题,width / height 设置为0即可
.codeBox {
width: 100%;
box-sizing: border-box;
padding: 0 54rpx;
margin-bottom: 42rpx;
}
.codeBox .codeMain {
position: relative;
}
.codeBox .codeInp {
display: flex;
justify-content: space-between;
}
.codeBox .codeInp .code {
width: 120rpx;
height: 120rpx;
box-sizing: border-box;
border: 2rpx solid #CCCDCF;
border-radius: 12rpx;
color: #0C1733;
font-size: 80rpx;
font-weight: 800;
line-height: 120rpx;
text-align: center;
}
.codeBox .codeInpContent {
width: 0;
height: 0;
position: absolute;
left: 0;
top: 0;
}
|