開始之前的小嘮叨
前端小白~迷迷糊糊就寫了一個支付盤,來到掘金,獻上自己的處女作~
<div class="goods-psd">
<p class="apply-title">
請輸入支付密碼
</p>
<p style="margin: 0.2rem">確認支付 <span>{{password}}</span> </p>
<div class="psd-container">
<input class="psd-input" type="password" readonly v-for="(value,index) in passwordGroup" :key="index" :value="value.value">
</div>
</div>
<div class="input-pan">
<div class="pan-num" v-for="(value,num) in number" :key="num" @click="inputPsd(value)">{{value}}</div>
</div>
</div>
複製程式碼
- 不管邏輯有沒有搞懂,先把樣式寫出來總是沒錯啦~
思路梳理
1.輸入框使用for迴圈,迴圈出6個input; 2.下面的按鍵使用for迴圈,便於後期儲存記錄; 3.將所輸入的密碼放入到pasgroup陣列中; 4.定義輸入框的下標,將pasgroup陣列內容按照下標依次放入input內; 5.開始程式碼啦~
程式碼
data () {
return {
popupVisible1: true,
realInput: '',
password: '111',
passwordGroup: [],
number: ['1','2','3','4','5','6','7','8','9','取消','0','刪除'],
pasgroup: [],
currentInputIndex:-1
}
}
複製程式碼
在data內定義好我們需要的元素
initPasswordGroup () {
this.passwordGroup=[];
for(var i=0;i<6;i++){
this.passwordGroup.push({
value:null
})
}
}
複製程式碼
迴圈出input,將其內容賦值為value:null,在介面上顯示出6個輸入框
watch: {
currentInputIndex (val) {
if(val == 5){
console.log(this.pasgroup)
}else if(val <= -1){
this.currentInputIndex = -1
}
}
}
複製程式碼
監聽陣列下標的變化,當下標到5的時候列印出該陣列
inputPsd (value) {
switch (value) {
case '取消':
this.currentInputIndex = -1
this.pasgroup = []
this.initPasswordGroup ()
break;
case '刪除':
this.pasgroup.pop()
console.log(this.pasgroup)
// this.currentInputIndex 下標值,刪除新增時改變
this.passwordGroup[this.currentInputIndex].value = null
this.currentInputIndex--
console.log(this.passwordGroup)
break;
default:
this.pasgroup.push(value)
this.currentInputIndex++
this.passwordGroup[this.currentInputIndex].value = value
}
},
複製程式碼
獲取到所點選的元素,當點選‘取消’時清空input 輸入框內的內容,清除陣列;當點選‘刪除’時,下標值依次減減,將value重置為null; 當點選其他數字時,下標值依次增加,將陣列pasgroup[]裡面的內容寫進passwordGroup[]裡面,在輸入框中展示。就醬~完成了想要的效果~