項(xiàng)目背景
公司要做一個(gè)停車(chē)場(chǎng)微信小程序,支持臨時(shí)車(chē)預(yù)支付以及支付記錄查詢(xún)等功能,其中涉及車(chē)牌輸入的功能,為了提升用戶體驗(yàn),避免繁瑣的輸入,決定自己寫(xiě)一個(gè)鍵盤(pán)。
效果圖如下
省份簡(jiǎn)寫(xiě)鍵盤(pán)如下:

省份簡(jiǎn)寫(xiě)鍵盤(pán)
英文簡(jiǎn)寫(xiě)鍵盤(pán)如下:

英文簡(jiǎn)寫(xiě)鍵盤(pán)
源代碼
目錄結(jié)構(gòu)

目錄結(jié)構(gòu)
wxml文件內(nèi)容
-
<view wx:if="{{isShow}}" class="vehicle-panel" style="height:430rpx;background-color:{{backgroundColor}}">
-
<!--省份簡(jiǎn)寫(xiě)鍵盤(pán)-->
-
<block wx:if="{{keyBoardType === 1}}">
-
<view class="vehicle-panel-row">
-
<view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button' style="border:{{buttonBorder}}" wx:for="{{keyVehicle1}}" bindtap='vehicleTap' data-value="{{item}}" wx:for-index="idx" wx:key="idx">{{item}}</view>
-
-
<view class="vehicle-panel-row">
-
<view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button' style="border:{{buttonBorder}}" wx:for="{{keyVehicle2}}" bindtap='vehicleTap' data-value="{{item}}" wx:for-index="idx" wx:key="idx">{{item}}</view>
-
-
<view class="vehicle-panel-row">
-
<view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button' style="border:{{buttonBorder}}" wx:for="{{keyVehicle3}}" bindtap='vehicleTap' data-value="{{item}}" wx:for-index="idx" wx:key="idx">{{item}}</view>
-
-
<view class="vehicle-panel-row-last">
-
<view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button vehicle-panel-row-button-last' bindtap='vehicleTap' data-value="{{item}}" wx:for="{{keyVehicle4}}" style="border:{{buttonBorder}}" wx:for-index="idx" wx:key="idx">{{item}}</view>
-
-
-
-
-
<view class="vehicle-panel-row">
-
<view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button vehicle-panel-row-button-number' bindtap='vehicleTap' data-value="{{item}}" wx:for="{{keyNumber}}" style="border:{{buttonBorder}}" wx:for-index="idx" wx:key="item">{{item}}</view>
-
-
<view class="vehicle-panel-row">
-
<view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button' style="border:{{buttonBorder}}" wx:for="{{keyEnInput1}}" bindtap='vehicleTap' data-value="{{item}}" wx:for-index="idx" wx:key="idx">{{item}}</view>
-
-
<view class="vehicle-panel-row">
-
<view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button' style="border:{{buttonBorder}}" wx:for="{{keyEnInput2}}" bindtap='vehicleTap' data-value="{{item}}" wx:for-index="idx" wx:key="idx">{{item}}</view>
-
<view hover-class="vehicle-hover" style="border:{{buttonBorder}}" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button vehicle-panel-row-button-img'>
-
<image src='./delete.svg' class='vehicle-en-button-delete' bindtap='vehicleTap' data-value="delete" mode='aspectFit'>刪除</image>
-
-
-
<view class="vehicle-panel-row-last">
-
<view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button vehicle-panel-row-button-last' bindtap='vehicleTap' style="border:{{buttonBorder}}" data-value="{{item}}" wx:for="{{keyEnInput3}}" wx:for-index="idx" wx:key="idx">{{item}}</view>
-
<view hover-class="vehicle-hover" style="border:{{buttonBorder}}" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button vehicle-panel-ok' bindtap='vehicleTap' data-value="ok">確定</view>
-
-
-
json文件
-
-
-
js文件
-
-
-
externalClasses: ['v-panel'],
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
//1為省份鍵盤(pán),其它為英文鍵盤(pán)
-
-
-
-
-
-
-
-
-
-
-
-
keyEnInput1: 'QWERTYUIOP',
-
keyEnInput2: 'ASDFGHJKL',
-
-
-
-
vehicleTap: function (event) {
-
let val = event.target.dataset.value;
-
-
-
this.triggerEvent('delete');
-
this.triggerEvent('inputchange');
-
-
-
-
-
-
this.triggerEvent('inputchange', val);
-
-
-
-
wxss文件
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
justify-content: space-between;
-
-
-
-
-
justify-content: space-between;
-
-
-
.vehicle-panel-row-button {
-
-
-
-
-
-
-
-
-
-
.vehicle-panel-row-button-number {
-
-
-
.vehicle-panel-row-button-last {
-
-
-
-
-
-
-
-
.vehicle-panel-row-button-img {
-
-
-
-
-
.vehicle-en-button-delete {
-
-
-
-
-
background-color: #0F4BA1;
-
-
-
-
使用方式
示例
<v-panel is-show="{{isShow}}" bindok="inputOk" binddelete="inputdelete" bindinputchange="inputChange" key-board-type="{{keyBoardType}}" backgroundColor="white" />
屬性
屬性名稱(chēng) |
類(lèi)型 |
默認(rèn)值 |
說(shuō)明 |
isShow |
布爾(boolean) |
false |
控制鍵盤(pán)是否顯示,true顯示,false不顯示 |
buttonBorder |
字符串(String) |
"1px solid #ccc" |
控制鍵盤(pán)按鈕邊框,同css border屬性 |
backgroundColor |
字符串(String) |
#fff |
控制鍵盤(pán)背景色,同css |
keyBoardType |
數(shù)字(Number) |
1 |
控制鍵盤(pán)顯示類(lèi)型,1為省份簡(jiǎn)寫(xiě),2為英文簡(jiǎn)寫(xiě) |
事件
事件名稱(chēng) |
觸發(fā)情況 |
返回值 |
delete |
刪除按鈕按下的時(shí)候觸發(fā) |
微信事件 |
ok |
確定按鈕按下時(shí)觸發(fā) |
微信事件 |
inputchange |
輸入按鈕按下或者刪除按鈕按下時(shí)觸發(fā) |
輸入的值 |
完畢!
以上代碼僅供大家學(xué)習(xí)交流