小程序自定义键盘组件之车牌号录入

小程序自定义键盘组件之车牌号录入

效果图:
在这里插入图片描述

html:

<view bindtap="showAddCarNumFun">点击新增车牌号</view>

<view class="addCarNumBg" wx:if="{{showAddCarNum}}" catchtap="closeAddCarNum"></view>
<view class="addCarNumContent" wx:if="{{showAddCarNum}}">
  <view class="carNumSelectBox">
    <view class="carNumSelectTip">请输入完整车牌</view>
    <view class="flexAround">
      <view class="carNumSelectItem {{itemActiveIndex==index?'itemActiveClass':''}}" data-index="{{index}}" wx:for="{{carNumArr}}" bindtap="itemActive">
        <view>{{item}}</view>
      </view>
    </view>
  </view>

  <view class="customKeyboard">
    <view class="customKeyboardClose flexBetween">
      <view class="{{cansave?'cansaveClass':''}}" bindtap="{{cansave?'saveCarNum':''}}">保存</view>
      <view class="closeAddCarNum" catchtap="closeAddCarNum">关闭</view>
    </view>
    <view class="keyboardBox flex" style="flex-wrap: wrap;">
      <view class="keyboardItem {{item.name==''?'nameNone':''}} {{item.disabled?'disabledActive':''}}" wx:for="{{itemActiveIndex==0?keyboard1:itemActiveIndex==1?keyboard2:itemActiveIndex==6?keyboard4:keyboard3}}" bindtap="{{item.disabled?'':'choosedText'}}" data-text="{{item.name}}">
        {{item.name}}
      </view>
      <view class="keyboardItem" bindtap="delCarNumSelect"></view>
    </view>
  </view>
</view>

css:

.addCarNumBg{position: fixed;top: 0;left: 0;z-index: 400;width: 100%;height: 100vh;background: rgba(0, 0, 0, 0.6)}
.carNumSelectBox{position: fixed;bottom: 500rpx;left: 0;width: calc(100% - 60rpx);margin: 30rpx;z-index: 500}
.carNumSelectItem{width: 12%;height: 92rpx;line-height: 92rpx;text-align: center;background: white;margin-bottom: 10rpx;font-size: 34rpx;font-weight: bold;border: 1px solid #e5e5e5;border-radius: 4rpx}
.carNumSelectTip{font-size: 44rpx;font-weight: bold;text-align: center;margin-bottom: 50rpx;color: #f7f7f7}

.customKeyboard{position: fixed;bottom: 0;left: 0;z-index: 500}
.customKeyboardClose{position: absolute;top: -92rpx;left: 0;height: 92rpx;line-height: 92rpx;background: white;width: calc(100% - 40rpx);border-top: 1px solid #e5e5e5;padding: 0 20rpx;font-size: 34rpx;color: #666;}

.keyboardBox{background: #e5e5e5;padding: 20rpx 10rpx;padding-bottom: 0}
.keyboardItem{width: 9.0%;margin: 0.5%;height: 72rpx;line-height: 72rpx;text-align: center;background: white;margin-bottom: 20rpx;font-size: 30rpx;border-radius: 6rpx;box-shadow: 0 1px 2px #999;}
.disabledActive{background: #f7f7f7;color:#ccc}
.itemActiveClass{transform: scale(1.1);border: 1px solid #008cd7}

.cansaveClass{color: #008cd7}
.nameNone{background: none;box-shadow: none}

.flex{display: flex;align-items: center}
.flexBetween{display: flex;justify-content: space-between;align-items: center}
.flexAround{display: flex;justify-content: space-around;align-items: center}

js:

Component({
  properties: {
    props: { // 属性名
      type: Array,
      value: ''
    }
  },

  observers: {

  },

  data: {
    itemActiveIndex: 0,
    showAddCarNum: false,
    keyboard1: [
      { name: '京', disabled: false }, { name: '津', disabled: false },
      { name: '晋', disabled: false }, { name: '冀', disabled: false },
      { name: '蒙', disabled: false }, { name: '辽', disabled: false },
      { name: '吉', disabled: false }, { name: '黑', disabled: false },
      { name: '沪', disabled: false }, { name: '苏', disabled: false },
      { name: '浙', disabled: false }, { name: '皖', disabled: false },
      { name: '闽', disabled: false }, { name: '赣', disabled: false },
      { name: '鲁', disabled: false }, { name: '豫', disabled: false },
      { name: '鄂', disabled: false }, { name: '湘', disabled: false },
      { name: '粤', disabled: false }, { name: '桂', disabled: false },
      { name: '琼', disabled: false }, { name: '渝', disabled: false },
      { name: '川', disabled: false }, { name: '贵', disabled: false },
      { name: '云', disabled: false }, { name: '藏', disabled: false },
      { name: '陕', disabled: false }, { name: '甘', disabled: false },
      { name: '青', disabled: false }, { name: '宁', disabled: false },
      { name: '新', disabled: false }, { name: 'W', disabled: false },
      { name: '', disabled: true }, { name: '', disabled: true },
      { name: '', disabled: true }, { name: '', disabled: true },
      { name: '', disabled: true }, { name: '', disabled: true },
      { name: '', disabled: true }
    ],

    keyboard2: [
      { name: '1', disabled: true }, { name: '2', disabled: true },
      { name: '3', disabled: true }, { name: '4', disabled: true },
      { name: '5', disabled: true }, { name: '6', disabled: true },
      { name: '7', disabled: true }, { name: '8', disabled: true },
      { name: '9', disabled: true }, { name: '0', disabled: true },
      { name: 'Q', disabled: false }, { name: 'W', disabled: false },
      { name: 'E', disabled: false }, { name: 'R', disabled: false },
      { name: 'T', disabled: false }, { name: 'Y', disabled: false },
      { name: 'U', disabled: false }, { name: 'O', disabled: false },
      { name: 'P', disabled: false }, { name: '军', disabled: true },
      { name: 'A', disabled: false }, { name: 'S', disabled: false },
      { name: 'D', disabled: false }, { name: 'F', disabled: false },
      { name: 'J', disabled: false }, { name: 'K', disabled: false },
      { name: 'G', disabled: false }, { name: 'H', disabled: false },
      { name: 'L', disabled: false }, { name: '警', disabled: true },
      { name: 'Z', disabled: false }, { name: 'X', disabled: false },
      { name: 'C', disabled: false }, { name: 'V', disabled: false },
      { name: 'B', disabled: false }, { name: 'N', disabled: false },
      { name: 'M', disabled: false }, { name: '港', disabled: true },
      { name: '澳', disabled: true }
    ],

    keyboard3: [
      { name: '1', disabled: false }, { name: '2', disabled: false },
      { name: '3', disabled: false }, { name: '4', disabled: false },
      { name: '5', disabled: false }, { name: '6', disabled: false },
      { name: '7', disabled: false }, { name: '8', disabled: false },
      { name: '9', disabled: false }, { name: '0', disabled: false },
      { name: 'Q', disabled: false }, { name: 'W', disabled: false },
      { name: 'E', disabled: false }, { name: 'R', disabled: false },
      { name: 'T', disabled: false }, { name: 'Y', disabled: false },
      { name: 'U', disabled: false }, { name: 'O', disabled: true },
      { name: 'P', disabled: false }, { name: '军', disabled: true },
      { name: 'A', disabled: false }, { name: 'S', disabled: false },
      { name: 'D', disabled: false }, { name: 'F', disabled: false },
      { name: 'J', disabled: false }, { name: 'K', disabled: false },
      { name: 'G', disabled: false }, { name: 'H', disabled: false },
      { name: 'L', disabled: false }, { name: '警', disabled: true },
      { name: 'Z', disabled: false }, { name: 'X', disabled: false },
      { name: 'C', disabled: false }, { name: 'V', disabled: false },
      { name: 'B', disabled: false }, { name: 'N', disabled: false },
      { name: 'M', disabled: false }, { name: '港', disabled: true },
      { name: '澳', disabled: true }
    ],

    keyboard4: [
      { name: '1', disabled: false }, { name: '2', disabled: false },
      { name: '3', disabled: false }, { name: '4', disabled: false },
      { name: '5', disabled: false }, { name: '6', disabled: false },
      { name: '7', disabled: false }, { name: '8', disabled: false },
      { name: '9', disabled: false }, { name: '0', disabled: false },
      { name: 'Q', disabled: false }, { name: 'W', disabled: false },
      { name: 'E', disabled: false }, { name: 'R', disabled: false },
      { name: 'T', disabled: false }, { name: 'Y', disabled: false },
      { name: 'U', disabled: false }, { name: 'O', disabled: false },
      { name: 'P', disabled: false }, { name: '军', disabled: false },
      { name: 'A', disabled: false }, { name: 'S', disabled: false },
      { name: 'D', disabled: false }, { name: 'F', disabled: false },
      { name: 'J', disabled: false }, { name: 'K', disabled: false },
      { name: 'G', disabled: false }, { name: 'H', disabled: false },
      { name: 'L', disabled: false }, { name: '警', disabled: false },
      { name: 'Z', disabled: false }, { name: 'X', disabled: false },
      { name: 'C', disabled: false }, { name: 'V', disabled: false },
      { name: 'B', disabled: false }, { name: 'N', disabled: false },
      { name: 'M', disabled: false }, { name: '港', disabled: false },
      { name: '澳', disabled: false }
    ],

    carNumArr: ['', '', '', '', '', '', ''],
    cansave: false
  },

  ready() {

  },

  /**
   * 组件的方法列表
   */
  methods: {
    //选择车牌
    choosedText: function (e) {
      let text = e.currentTarget.dataset.text;
      let itemActiveIndex = this.data.itemActiveIndex;
      this.setData({
        [`carNumArr[${itemActiveIndex}]`]: text
      })
      if (itemActiveIndex < 6) {
        itemActiveIndex += 1
        this.setData({
          itemActiveIndex
        })
      }
      let cansave = this.data.carNumArr.every(val => {
        return val != ''
      })
      if (cansave) {
        this.setData({
          cansave: true
        })
      }
      console.log(cansave)
    },

    //删除当前框的值
    delCarNumSelect: function () {
      let itemActiveIndex = this.data.itemActiveIndex;
      this.setData({
        [`carNumArr[${itemActiveIndex}]`]: ''
      })
      if (itemActiveIndex > 0) {
        itemActiveIndex -= 1
        this.setData({
          itemActiveIndex, cansave: false
        })
      }
    },

    saveCarNum: function () {
      let carNumArr = this.data.carNumArr;
      carNumArr = carNumArr.join('');
      console.log(carNumArr)
    },

    //选择输入框
    itemActive: function (e) {
      let index = e.currentTarget.dataset.index;
      this.setData({ itemActiveIndex: index })
    },

    //点击显示新增车牌
    showAddCarNumFun: function () {
      this.setData({ showAddCarNum: true })
    },

    //点击取消新增车牌
    closeAddCarNum: function () {
      this.setData({
        showAddCarNum: false,
        carNumArr: ['', '', '', '', '', '', ''],
        itemActiveIndex: 0
      })
    }
  }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值