效果如下:
項(xiàng)目源碼:
wxml文件:
<view class="pages">
? <view class='tips'>
? ? <text>點(diǎn)擊方框輸入車(chē)牌號(hào)</text>
? </view>
? <view class="plate-input-body">
? ? <view class="new-plate-input-content" >
? ? ? <view class="{{inputOnFocusIndex=='0'?'plate-nums-foc rightb1':'plate-nums-first rightb'}} ">
? ? ? ? <text bindtap="inputClick" class="plate-num-text" data-id="0">{{inputPlates.index0}}</text>
? ? ? </view>
? ? ? <view class="{{inputOnFocusIndex=='1'?'plate-nums-foc leftb1':'plate-nums-first leftb'}} ">
? ? ? ? <text bindtap="inputClick" class="plate-num-text" data-id="1">{{inputPlates.index1}}</text>
? ? ? </view>
? ? ? <view class="dos-style"><text></text></view>
? ? ? <view class="{{inputOnFocusIndex=='2'?'plate-nums-foc':'plate-nums-first'}}">
? ? ? ? <text bindtap="inputClick" class="plate-num-text" data-id="2">{{inputPlates.index2}}</text>
? ? ? </view>
? ? ? <view class="{{inputOnFocusIndex=='3'?'plate-nums-foc':'plate-nums-first'}}">
? ? ? ? <text bindtap="inputClick" class="plate-num-text" data-id="3">{{inputPlates.index3}}</text>
? ? ? </view>
? ? ? <view class="{{inputOnFocusIndex=='4'?'plate-nums-foc':'plate-nums-first'}}">
? ? ? ? <text bindtap="inputClick" class="plate-num-text" data-id="4">{{inputPlates.index4}}</text>
? ? ? </view>
? ? ? <view class="{{inputOnFocusIndex=='5'?'plate-nums-foc':'plate-nums-first'}}">
? ? ? ? <text bindtap="inputClick" class="plate-num-text" data-id="5">{{inputPlates.index5}}</text>
? ? ? </view>
? ? ? <view class="{{inputOnFocusIndex=='6'?'plate-nums-foc':'plate-nums-first'}}">
? ? ? ? <text bindtap="inputClick" class="plate-num-text" data-id="6">{{inputPlates.index6}}</text>
? ? ? </view>
? ? ? <view class="{{inputOnFocusIndex=='7'?'plate-nums-foc':'plate-nums-first newnw'}} ">
? ? ? ? <text? bindtap="inputClick" class="plate-num-text {{inputPlates.index7==''?'newnw-color on':'def'}}" data-id="7">{{inputPlates.index7==""&&inputOnFocusIndex!='7'?isnewNw : inputPlates.index7}}</text>
? ? ? </view>
? ? </view>
? </view>
? <view class="plate-style">
? ? <button type="default" class="{{isbtns?'def':'on'}}" bindtap="plateCar" disabled="{{isbtns}}">查詢(xún)我的車(chē)牌</button>
? </view>
? <!--鍵盤(pán)-->
? <view class="keyboard" wx:if="{{isKeyboard}}">
? ? <view class="kb_top">
? ? ? <text catchtap="tapSpecBtn" data-index="1" class="cloose-key-b">關(guān)閉</text>
? ? </view>
? ? <view style="width:100%; text-align:center;" wx:if="{{!isNumberKB}}">
? ? ? <view style="width:99%;display:flex;text-align:center;margin:0 auto">
? ? ? ? <view catchtap="tapKeyboard" class="td td_nor" data-index="{{idx}}" data-val="{{itemName}}" hoverClass="board_bg" hoverStartTime="0" hoverStayTime="80" wx:if="{{idx<=9}}" wx:for="{{keyboard1}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? </view>
? ? ? <view style="display:flex;text-align:center; width:99%;margin:0 auto">
? ? ? ? <view catchtap="tapKeyboard" class="td td_nor" data-index="{{idx}}" data-val="{{itemName}}" hoverClass="board_bg" hoverStartTime="0" hoverStayTime="80" wx:if="{{idx<=19&&idx>9}}" wx:for="{{keyboard1}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? </view>
? ? ? <view style="display:flex;text-align:center; width:99%;margin:0 auto">
? ? ? ? <view catchtap="tapKeyboard" class="td td_nor" data-index="{{idx}}" data-val="{{itemName}}" hoverClass="board_bg" hoverStartTime="0" hoverStayTime="80" wx:if="{{idx<=29&&idx>19}}" wx:for="{{keyboard1}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? </view>
? ? ? <view style="display:flex; width:60%;text-align:center;">
? ? ? ? <view catchtap="tapKeyboard" class="td td_nor" data-index="{{idx}}" data-val="{{itemName}}" hoverClass="board_bg" hoverStartTime="0" hoverStayTime="80" wx:if="{{idx>29}}" wx:for="{{keyboard1}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? </view>
? ? ? <view bindtap="tapSpecBtn" class="del-first" data-index="0" hoverClass="del-hover" hoverStartTime="0" hoverStayTime="80">
? ? ? x
? ? ? </view>
? ? </view>
? ? <view style="width:100%; text-align:center;" wx:if="{{isNumberKB}}">
? ? ? <view style="width:99%;display:flex;text-align:center;margin:0 auto">
? ? ? ? <view class="td td_num board_bg" wx:if="{{!tapNum&&idx<=9}}" wx:for="{{keyboardNumber}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? </view>
? ? ? <view style="width:99%;display:flex;text-align:center;margin:0 auto">
? ? ? ? <view catchtap="tapKeyboard" class="td td_num" data-index="{{idx}}" data-val="{{itemName}}" hoverClass="board_bg" hoverStartTime="0" hoverStayTime="80" wx:if="{{tapNum&&idx<=9}}" wx:for="{{keyboardNumber}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? </view>
? ? ? <view style="width:99%;display:flex;text-align:center;margin:0 auto">
? ? ? ? <view catchtap="tapKeyboard" class="td td_num" data-index="{{idx}}" data-val="{{itemName}}" hoverClass="board_bg" hoverStartTime="0" hoverStayTime="80" wx:if="{{idx>9&&idx<=19}}" wx:for="{{keyboardNumber}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? </view>
? ? ? <view style="width:99%;display:flex;text-align:center;margin:0 auto">
? ? ? ? <view catchtap="tapKeyboard" class="td td_num" data-index="{{idx}}" data-val="{{itemName}}" hoverClass="board_bg" hoverStartTime="0" hoverStayTime="80" wx:if="{{idx>19&&idx<=29}}" wx:for="{{keyboardNumber}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? </view>
? ? ? <view style="width:79%;display:flex;text-align:left; margin-left:5rpx;">
? ? ? ? <view catchtap="tapKeyboard" class="td td_num" data-index="{{idx}}" data-val="{{itemName}}" hoverClass="board_bg" hoverStartTime="0" hoverStayTime="80" wx:if="{{idx>29&&idx<=33}}" wx:for="{{keyboardNumber}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? ? <view class="td td_num board_bg" wx:if="{{!bottomNum&&idx>33}}" wx:for="{{keyboardNumber}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? ? <view catchtap="tapKeyboard" class="td td_num" data-index="{{idx}}" data-val="{{itemName}}" hoverClass="board_bg" hoverStartTime="0" hoverStayTime="80" wx:if="{{bottomNum&&idx>33}}" wx:for="{{keyboardNumber}}" wx:for-index="idx" wx:for-item="itemName" wx:key="{{itemName}}">
? ? ? ? ? {{itemName}}
? ? ? ? </view>
? ? ? </view>
? ? ? <view bindtap="tapSpecBtn" class="del-first" data-index="0" hoverClass="del-hover" hoverStartTime="0" hoverStayTime="80">
? ? ? x
? ? ? </view>
? ? </view>
? </view>
</view>
wxss文件:
.pages_header{
? width: 100%;
? display: flex;
? flex-direction: column;
? align-items: center;
}
.pages_header_top{
? width:33.3%;
? height: 60rpx;
? border-left: 5px solid green;
? border-right: 5px solid green;
}
.pages_header_btm{
? width:70%;
? background: green;
? height: 120rpx;
? line-height: 120rpx;
? text-align: center;
? color: white;
? border-radius: 10rpx;
? font-weight: normal;
? font-size: 16pt;
}
.tips{
? text-align: center;
? margin: 60rpx 0;
? font-size: 12pt;
? color: #888888;
}
.plate-input-flag{
? margin: 30rpx 10rpx 30rpx 0;
? color: green;
? float: right;
}
.plate-input-body {
? /*border: 1px solid red;*/
? height: 90rpx;
? margin: 0 0 0 10rpx;
}
.plate-input-content {
? display: flex;
? flex-direction: row;
? height: 90rpx;
}
.plate-nums-foc{
? ? flex: 1;
? ? border: 2rpx solid #5485FF;
? ? margin-right: 10rpx;
? ? display: flex;
? ? align-items: center;
? ? justify-content: center;
? ? text-align: center;
? ? height: 100%;
? ? box-sizing: border-box;
? ? border-radius: 4rpx;
}
.plate-nums-first{
? ? flex: 1;
? ? border: 2rpx solid #ccc;
? ? margin-right: 10rpx;
? ? display: flex;
? ? align-items: center;
? ? justify-content: center;
? ? text-align: center;
? ? height: 100%;
? ? box-sizing: border-box;
? ? border-radius: 4rpx;
}
.plate-num-text {
? ? flex: 1;
? ? line-height: 80rpx;
? ? height: 100%;
? ? box-sizing: border-box;
? ? border-radius: 4rpx;
? ? font-size: 40rpx;
? ? font-weight: normal;
}
.new-plate-input-content{
? display: flex;
? flex-direction: row;
? height: 90rpx;
}
.kb_top {
? ? align-content: relative;
? ? width: 100%;
? ? height: 74rpx;
? ? background: #fff;
? ? border-top: solid #ebebeb 2rpx;
? ? border-bottom: 15rpx solid #d7d8dc;
}
.keyboard {
? ? z-index: 9999;
? ? position: fixed;
? ? bottom: 0;
? ? left: 0;
? ? width: 100%;
? ? height: auto;
? ? background: #d7d8dc;
? ? display: flex;
? ? flex-wrap: wrap;
? ? border-bottom: 15rpx solid #d7d8dc;
}
.td {
? ? font-family: "微軟雅黑";
? ? flex-grow: 1;
? ? text-align: center;
? ? font-size: 34rpx;
? ? height: 86rpx;
? ? line-height: 80rpx;
? ? background: #fff;
? ? margin: 10rpx 5rpx;
? ? color: #333;
? ? border-radius: 10rpx 10rpx 10rpx 10rpx;
? ? box-shadow: 0rpx 2rpx 0rpx #a9a9a9;
}
.td_nor {
? ? flex: 1 1 6%;
}
.td_num {
? ? flex: 1 1 8%;
}
.td_spec {
? ? flex: 1 1 12%;
}
.board_bg {
? ? box-shadow: 0 0 0 #e5e5e5;
? ? background: #e5e5e5;
}
.del-first {
? ? position: absolute;
? ? bottom: 10rpx;
? ? right: 10rpx;
? ? width: 137rpx;
? ? height: 86rpx;
? ? background-color: #fff;
? ? box-shadow: 0rpx 2rpx 0rpx #a9a9a9;
? ? display: flex;
? ? align-items: center;
? ? justify-content: center;
? ? border-radius: 10rpx;
? ? color: #5485FF
}
.del-hover {
? ? position: absolute;
? ? bottom: 10rpx;
? ? right: 10rpx;
? ? width: 137rpx;
? ? height: 86rpx;
? ? background-color: #e5e5e5;
? ? display: flex;
? ? align-items: center;
? ? justify-content: center;
? ? border-radius: 10rpx;
? ? box-shadow: 0 0 0 #e5e5e5;
}
.del-img {
? ? display: block;
? ? width: 46rpx;
? ? height: 38rpx;
}
.plate-style{
? margin-top: 70rpx;
}
.plate-style button{
? margin: 0 10rpx;
? color: #fff;
}
.plate-style button.on{
? background: #5485FF;
? transition: all 0.2s;
}
.plate-style button.def{
? background: #799ffd;
? color: #fff;
}
.plate-style button.on:active{
? background: #3e75ff;
}
.cloose-key-b{
position:absolute;
right:0;
display:block;
height:74rpx;
padding:0 34rpx;
color:#5485FF;
line-height:74rpx;
? font-size: 30rpx;
}
.rightb{
? border-right: 2rpx solid rgba(255,255,255,0);
? margin-right: 0rpx;
? border-radius:4rpx 0rpx 0rpx 4rpx;
? position: relative;
}
.rightb1{
? /* border-right: 2rpx solid #00bf70; */
? border-radius:4rpx;
? margin-right: 0rpx;
}
.rightb:after{
? position: absolute;
? content: "";
? top: 20rpx;
? bottom: 20rpx;
? right: -1rpx;
? width:2rpx;
? background: #ccc;
}
.leftb{
? margin-left: -2rpx;
? border-left: 2rpx solid rgba(255,255,255,0);
? border-radius:0rpx 4rpx 4rpx 0rpx;
}
.leftb1{
? margin-left: -2rpx;
? border-radius:4rpx;
? z-index: 999
}
.newnw{
? border: 2rpx dashed #ccc;
}
.newnw text.on{
? line-height: 40rpx;
}
.newnw text.def{
? line-height: 80rpx;
}
.newnw-color{
? font-size: 20rpx;
? color: #666;
}
.dos-style{
? display: flex;
? align-items: center;
? margin-right: 10rpx;
}
.dos-style text{
? display: inline-block;
? width: 10rpx;
? height: 10rpx;
? border-radius: 5rpx;
? background: #666;
}
js文件:
Page({
? data: {
? ? isKeyboard: !1, //控制鍵盤(pán)外部顯示
? ? isNumberKB: !1, //鍵盤(pán)切換
? ? tapNum: !1, //控制數(shù)字
? ? bottomNum: !1,//控制港澳使學(xué)
? ? disableKey: "1234567890港澳學(xué)使",
? ? keyboardNumber: "1234567890ABCDEFGHJKLMNPQRSTUVWXYZ港澳學(xué)使",
? ? keyboard1: "京滬粵津冀晉蒙遼吉黑蘇浙皖閩贛魯豫鄂湘桂瓊渝川貴云藏陜甘寧青新港澳臺(tái)使無(wú)",
? ? inputPlates: {
? ? ? index0: "粵",
? ? ? index1: "B",
? ? ? index2: "",
? ? ? index3: "",
? ? ? index4: "",
? ? ? index5: "",
? ? ? index6: "",
? ? ? index7: ""
? ? },
? ? inputOnFocusIndex: "",
? ? isnewNw:'+\n新能源',
? ? isbtns:true,
? ? plate:"",
? ? flag: false
? },
? onLoad: function () {
? ? this.initPlate(); //初始化獲取車(chē)牌
? },
? initPlate:function(){
? let n = this.data.inputPlates.index0 + this.data.inputPlates.index1 + this.data.inputPlates.index2 +? this.data.inputPlates.index3? ? +? ? ? this.data.inputPlates.index4 + this.data.inputPlates.index5 + this.data.inputPlates.index6 + this.data.inputPlates.index7;
? ? let plates = this.data.inputPlates;
? ? let len;
? ? if (plates.index0 == '' || plates.index1 == '' || plates.index2 == '' || plates.index3 == '' || plates.index4 == '' || plates.index5 == '' || plates.index6 == ''){
? ? ? len = true;
? ? }else{
? ? ? len = false
? ? }
? ? this.setData({
? ? ? plate: n, //更新車(chē)牌
? ? ? isbtns: len //更新按鈕狀態(tài)
? ? });
? },
? inputClick: function (t) { //點(diǎn)擊輸入選項(xiàng)
? ? var that = this;
? ? that.setData({
? ? ? inputOnFocusIndex: t.target.dataset.id,
? ? ? isKeyboard: !0
? ? })
? ? "0" == this.data.inputOnFocusIndex ? that.setData({
? ? ? tapNum: !1,
? ? ? isNumberKB: !1,
? ? ? bottomNum: !1
? ? }) : "1" == this.data.inputOnFocusIndex ? that.setData({
? ? ? tapNum: !1,
? ? ? isNumberKB: !0,
? ? ? bottomNum: !1
? ? ? }) : "6" == this.data.inputOnFocusIndex ? that.setData({
? ? ? ? tapNum: !0,
? ? ? ? isNumberKB: !0,
? ? ? ? bottomNum :!0
? ? }) :that.setData({
? ? ? tapNum: !0,
? ? ? isNumberKB: !0,
? ? ? bottomNum: !1
? ? });
? },
? //鍵盤(pán)點(diǎn)擊事件
? tapKeyboard: function (t) {
? ? t.target.dataset.index;
? ? var a = t.target.dataset.val;
? ? switch (this.data.inputOnFocusIndex) {
? ? ? case "0":
? ? ? ? this.setData({
? ? ? ? ? "inputPlates.index0": a,
? ? ? ? ? inputOnFocusIndex: "1"
? ? ? ? });
? ? ? ? break;
? ? ? case "1":
? ? ? ? this.setData({
? ? ? ? ? "inputPlates.index1": a,
? ? ? ? ? inputOnFocusIndex: "2"
? ? ? ? });
? ? ? ? break;
? ? ? case "2":
? ? ? ? this.setData({
? ? ? ? ? "inputPlates.index2": a,
? ? ? ? ? inputOnFocusIndex: "3"
? ? ? ? });
? ? ? ? break;
? ? ? case "3":
? ? ? ? this.setData({
? ? ? ? ? "inputPlates.index3": a,
? ? ? ? ? inputOnFocusIndex: "4"
? ? ? ? });
? ? ? ? break;
? ? ? case "4":
? ? ? ? this.setData({
? ? ? ? ? "inputPlates.index4": a,
? ? ? ? ? inputOnFocusIndex: "5"
? ? ? ? });
? ? ? ? break;
? ? ? case "5":
? ? ? ? this.setData({
? ? ? ? ? "inputPlates.index5": a,
? ? ? ? ? inputOnFocusIndex: "6"
? ? ? ? });
? ? ? ? break;
? ? ? case "6":
? ? ? ? this.setData({
? ? ? ? ? "inputPlates.index6": a,
? ? ? ? ? inputOnFocusIndex: ""
? ? ? ? });
? ? ? ? break;
? ? ? case "7":
? ? ? ? this.setData({
? ? ? ? ? "inputPlates.index7": a,
? ? ? ? ? inputOnFocusIndex: ""
? ? ? ? });
? ? }
? ? this.initPlate();//監(jiān)聽(tīng)車(chē)牌實(shí)時(shí)變化
? ? this.checkedSubmitButtonEnabled();
? ? if (this.data.inputOnFocusIndex == ''){
? ? ? this.setData({
? ? ? ? isKeyboard: !1,
? ? ? ? isNumberKB: !1,
? ? ? ? bottomNum: !1,
? ? ? ? inputOnFocusIndex: ""
? ? ? });
? ? }
? },
? //鍵盤(pán)關(guān)閉按鈕點(diǎn)擊事件
? tapSpecBtn: function (t) {
? ? var a = this, e = t.target.dataset.index;
? ? if (0 == e) {
? ? ? switch (parseInt(this.data.inputOnFocusIndex)) {
? ? ? ? case 0:
? ? ? ? ? this.setData({
? ? ? ? ? ? "inputPlates.index0": "",
? ? ? ? ? ? inputOnFocusIndex: "0"
? ? ? ? ? });
? ? ? ? ? break;
? ? ? ? case 1:
? ? ? ? ? this.setData({
? ? ? ? ? ? "inputPlates.index1": "",
? ? ? ? ? ? inputOnFocusIndex: "0"
? ? ? ? ? });
? ? ? ? ? break;
? ? ? ? case 2:
? ? ? ? ? this.setData({
? ? ? ? ? ? "inputPlates.index2": "",
? ? ? ? ? ? inputOnFocusIndex: "1"
? ? ? ? ? });
? ? ? ? ? break;
? ? ? ? case 3:
? ? ? ? ? this.setData({
? ? ? ? ? ? "inputPlates.index3": "",
? ? ? ? ? ? inputOnFocusIndex: "2"
? ? ? ? ? });
? ? ? ? ? break;
? ? ? ? case 4:
? ? ? ? ? this.setData({
? ? ? ? ? ? "inputPlates.index4": "",
? ? ? ? ? ? inputOnFocusIndex: "3"
? ? ? ? ? });
? ? ? ? ? break;
? ? ? ? case 5:
? ? ? ? ? this.setData({
? ? ? ? ? ? "inputPlates.index5": "",
? ? ? ? ? ? inputOnFocusIndex: "4"
? ? ? ? ? });
? ? ? ? ? break;
? ? ? ? case 6:
? ? ? ? ? this.setData({
? ? ? ? ? ? "inputPlates.index6": "",
? ? ? ? ? ? inputOnFocusIndex: "5"
? ? ? ? ? });
? ? ? ? ? break;
? ? ? ? case 7:
? ? ? ? ? this.setData({
? ? ? ? ? ? "inputPlates.index7": "",
? ? ? ? ? ? inputOnFocusIndex: "6"
? ? ? ? ? });
? ? ? }
? ? ? this.checkedSubmitButtonEnabled();
? ? } else 1 == e && a.setData({
? ? ? isKeyboard: !1,
? ? ? isNumberKB: !1,
? ? ? bottomNum: !1,
? ? ? inputOnFocusIndex: ""
? ? });
? ? this.initPlate(); //監(jiān)聽(tīng)車(chē)牌實(shí)時(shí)變化
? },
? //鍵盤(pán)切換
? checkedKeyboard: function () {
? ? var t = this;
? ? "0" == this.data.inputOnFocusIndex ? t.setData({
? ? ? tapNum: !1,
? ? ? isNumberKB: !1,
? ? ? bottomNum: !1
? ? }) : "1" == this.data.inputOnFocusIndex ? t.setData({
? ? ? tapNum: !1,
? ? ? isNumberKB: !0,
? ? ? bottomNum: !1
? ? ? }) : "6" == this.data.inputOnFocusIndex ? t.setData({
? ? ? ? tapNum: !0,
? ? ? ? isNumberKB: !0,
? ? ? ? bottomNum: !0
? ? ? }) :this.data.inputOnFocusIndex.length > 0 && t.setData({
? ? ? tapNum: !0,
? ? ? isNumberKB: !0,
? ? ? bottomNum: !1
? ? });
? },
? checkedSubmitButtonEnabled: function () {
? ? this.checkedKeyboard();
? ? var t = !0;
? ? for (var a in this.data.inputPlates) if ("index7" != a && this.data.inputPlates[a].length < 1) {
? ? ? t = !1;
? ? ? break;
? ? }
? },
? plateCar:function(){
? ? console.log(this.data.plate);
? ? ? wx.showModal({
? ? ? ? title: '',
? ? ? ? content: '請(qǐng)輸入正確的車(chē)牌號(hào)碼',
? ? ? ? showCancel:false,
? ? ? ? confirmText:'取消',
? ? ? ? success(res) {
? ? ? ? ? if (res.confirm) {
? ? ? ? ? ? console.log('點(diǎn)擊取消操作');
? ? ? ? ? }
? ? ? ? }
? ? ? })
? },
})