前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

  • 前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input已关闭评论
  • 102 次浏览
  • A+
所属分类:Web前端

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13166

效果图如下:

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

cc-defineKeyboard

使用方法

 <!-- ref:唯一ref  passwrdType:密码样式pay keyInfo:密码输入监测事件 -->  <cc-defineKeyboard ref="CodeKeyboard" passwrdType="pay" @KeyInfo="KeyInfo"></cc-defineKeyboard>  /** * 唤起键盘 */  onPayUp() {  this.$refs.CodeKeyboard.show();  },  /*** 支付键盘回调* @param {Object} val */  KeyInfo(val) {  if (val.index >= 6) {  return;  }  // 判断是否输入的是删除键  if (val.keyCode === 8) {  // 删除最后一位  this.passwordArr.splice(val.index + 1, 1)  }  // 判断是否输入的是.  else if (val.keyCode == 190) {  // 输入.无效  } else {  this.passwordArr.push(val.key);  }  uni.showModal({  title: '温馨提示',  content: '输入密码是 = ' + JSON.stringify(this.passwordArr)  })  }  

HTML代码实现部分

 <template>  <view class="page">  <view>  <view class="pay-title">  <text v-show="AffirmStatus === 1">请输入6位支付密码</text>  <text v-show="AffirmStatus === 2">请设置6位支付密码</text>  <text v-show="AffirmStatus === 3">请确认6位支付密码</text>  </view>  <view class="pay-password" @click="onPayUp">  <view class="list">  <text v-show="passwordArr.length >= 1">●</text>  </view>  <view class="list">  <text v-show="passwordArr.length >= 2">●</text>  </view>  <view class="list">  <text v-show="passwordArr.length >= 3">●</text>  </view>  <view class="list">  <text v-show="passwordArr.length >= 4">●</text>  </view>  <view class="list">  <text v-show="passwordArr.length >= 5">●</text>  </view>  <view class="list">  <text v-show="passwordArr.length >= 6">●</text>  </view>  </view>  <view class="hint">  <text>忘记支付密码?</text>  </view>  </view>  <!-- ref:唯一ref  passwrdType:密码样式pay keyInfo:密码输入返回事件 -->  <cc-defineKeyboard ref="CodeKeyboard" passwrdType="pay" @KeyInfo="KeyInfo"></cc-defineKeyboard>  </view>  </template>  <script>  export default {  components: {  },  data() {  return {  AffirmStatus: 1,  passwordArr: [],  oldPasswordArr: [],  newPasswordArr: [],  afPasswordArr: [],  };  },  onLoad() {  },  methods: {  /**  * 唤起键盘  */  onPayUp() {  this.$refs.CodeKeyboard.show();  },  /**  * 支付键盘回调  * @param {Object} val  */  KeyInfo(val) {  if (val.index >= 6) {  return;  }  // 判断是否输入的是删除键  if (val.keyCode === 8) {  // 删除最后一位  this.passwordArr.splice(val.index + 1, 1)  }  // 判断是否输入的是.  else if (val.keyCode == 190) {  // 输入.无效  } else {  this.passwordArr.push(val.key);  }  uni.showModal({  title: '温馨提示',  content: '输入密码是 = ' + JSON.stringify(this.passwordArr)  })  // 判断是否等于6  if (this.passwordArr.length === 6) {  this.passwordArr = [];  this.AffirmStatus = this.AffirmStatus + 1;  }  // 判断到哪一步了  if (this.AffirmStatus === 1) {  this.oldPasswordArr = this.passwordArr;  } else if (this.AffirmStatus === 2) {  this.newPasswordArr = this.passwordArr;  } else if (this.AffirmStatus === 3) {  this.afPasswordArr = this.passwordArr;  } else if (this.AffirmStatus === 4) {  console.log(this.oldPasswordArr.join(''));  console.log(this.newPasswordArr.join(''));  console.log(this.afPasswordArr.join(''));  uni.showToast({  title: '修改成功',  icon: 'none'  })  setTimeout(() => {  uni.navigateBack();  }, 2000)  }  this.$forceUpdate();  }  }  }  </script>  <style scoped lang="scss">  $base: orangered; // 基础颜色  .page {  position: absolute;  left: 0;  top: 0;  width: 100%;  height: 100%;  background-color: #FFFFFF;  }  .pay-title {  display: flex;  align-items: center;  justify-content: center;  width: 100%;  height: 200rpx;  text {  font-size: 28rpx;  color: #555555;  }  }  .pay-password {  display: flex;  align-items: center;  width: 90%;  height: 80rpx;  margin: 20rpx auto;  border: 2rpx solid $base;  .list {  display: flex;  align-items: center;  justify-content: center;  width: 16.666%;  height: 100%;  border-right: 2rpx solid #EEEEEE;  text {  font-size: 32rpx;  }  }  .list:nth-child(6) {  border-right: none;  }  }  .hint {  display: flex;  align-items: center;  justify-content: center;  width: 100%;  height: 100rpx;  text {  font-size: 28rpx;  color: $base;  }  }  </style>