微信小程序車牌鍵盤

項(xiàng)目背景

公司要做一個停車場微信小程序酗捌,支持臨時車預(yù)支付以及支付記錄查詢等功能,其中涉及車牌輸入的功能,為了提升用戶體驗(yàn),避免繁瑣的輸入短绸,決定自己寫一個鍵盤。

效果圖如下

省份簡寫鍵盤如下:

省份簡寫鍵盤

英文簡寫鍵盤如下:

英文簡寫鍵盤

源代碼

目錄結(jié)構(gòu)

目錄結(jié)構(gòu)

wxml文件內(nèi)容

<view wx:if="{{isShow}}" class="vehicle-panel" style="height:430rpx;background-color:{{backgroundColor}}">
  <!--省份簡寫鍵盤-->
  <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>
    <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>
    <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>
    <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>
  </block>
  <!--英文鍵盤  -->
  <block wx:else>
    <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>
    <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>
    <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>
    </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' 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>
    </view>
  </block>
</view>

json文件

{
  "component": true
}

js文件

Component({

  externalClasses: ['v-panel'],

  properties: {
    isShow: {
      type: Boolean,
      value: false,
    },
    buttonBorder: {
      type: String,
      value: "1px solid #ccc"
    },
    backgroundColor:{
      type: String,
      value: "#fff"
    },
    //1為省份鍵盤筹裕,其它為英文鍵盤
    keyBoardType: {
      type: Number,
      value: 1,
    }
  },
  data: {
    keyVehicle1: '陜京津滬冀豫云遼',
    keyVehicle2: '黑湘皖魯新蘇浙贛',
    keyVehicle3: '鄂桂甘晉蒙吉閩貴',
    keyVehicle4: '粵川青藏瓊寧渝',
    keyNumber: '1234567890',
    keyEnInput1: 'QWERTYUIOP',
    keyEnInput2: 'ASDFGHJKL',
    keyEnInput3: 'ZXCVBNM',
  },
  methods: {
    vehicleTap: function (event) {
      let val = event.target.dataset.value;
      switch (val){
        case 'delete':
          this.triggerEvent('delete');
          this.triggerEvent('inputchange');
        break;
        case 'ok':
          this.triggerEvent('ok');
        break;
        default:
          this.triggerEvent('inputchange', val);
      }
    },
  }
});

wxss文件

:host {
  width: 100%;
}
.vehicle-panel {
  width: 100%;
  position: fixed;
  bottom: 0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  z-index: 1000;
}
.vehicle-panel-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.vehicle-panel-row-last{
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.vehicle-panel-row-button {
  background-color: #fff;
  margin: 5rpx;
  padding: 5rpx;
  width: 80rpx;
  height: 80rpx;
  text-align: center;
  line-height: 80rpx;
  border-radius: 10rpx;
}
.vehicle-panel-row-button-number {
  background-color: #eee;
}
.vehicle-panel-row-button-last {
  width: 90rpx;
  height: 90rpx;
  line-height: 90rpx;
}
.vehicle-hover {
  background-color: #ccc;
}
.vehicle-panel-row-button-img {
  display: flex;
  justify-content: center;
  align-items: center;
}
.vehicle-en-button-delete {
  width: 55rpx;
  height: 85rpx;
}
.vehicle-panel-ok {
  background-color: #0F4BA1;
  color: #fff;
  width: 150rpx;
  height: 80rpx;
}

使用方式

示例

<v-panel is-show="{{isShow}}" bindok="inputOk" binddelete="inputdelete" bindinputchange="inputChange" key-board-type="{{keyBoardType}}" backgroundColor="white" />

屬性

屬性名稱 類型 默認(rèn)值 說明
isShow 布爾(boolean) false 控制鍵盤是否顯示,true顯示醋闭,false不顯示
buttonBorder 字符串(String) "1px solid #ccc" 控制鍵盤按鈕邊框,同css border屬性
backgroundColor 字符串(String) #fff 控制鍵盤背景色,同css
keyBoardType 數(shù)字(Number) 1 控制鍵盤顯示類型,1為省份簡寫,2為英文簡寫

事件

事件名稱 觸發(fā)情況 返回值
delete 刪除按鈕按下的時候觸發(fā) 微信事件
ok 確定按鈕按下時觸發(fā) 微信事件
inputchange 輸入按鈕按下或者刪除按鈕按下時觸發(fā) 輸入的值

完畢!

以上代碼僅供大家學(xué)習(xí)交流

作者:rjhlovelife
原文:https://www.cnblogs.com/rjhlovelife/p/9347189.html

相關(guān)推薦:

在微信小程序中使用“隨機(jī)鍵盤”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朝卒,一起剝皮案震驚了整個濱河市证逻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抗斤,老刑警劉巖囚企,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異豪治,居然都是意外死亡洞拨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門负拟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烦衣,“玉大人,你說我怎么就攤上這事掩浙』ㄒ鳎” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵厨姚,是天一觀的道長衅澈。 經(jīng)常有香客問我,道長谬墙,這世上最難降的妖魔是什么今布? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任经备,我火速辦了婚禮,結(jié)果婚禮上部默,老公的妹妹穿的比我還像新娘侵蒙。我一直安慰自己,他們只是感情好傅蹂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布纷闺。 她就那樣靜靜地躺著,像睡著了一般份蝴。 火紅的嫁衣襯著肌膚如雪犁功。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天婚夫,我揣著相機(jī)與錄音浸卦,去河邊找鬼。 笑死请敦,一個胖子當(dāng)著我的面吹牛镐躲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侍筛,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼萤皂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了匣椰?” 一聲冷哼從身側(cè)響起裆熙,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎禽笑,沒想到半個月后入录,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡佳镜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年僚稿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蟀伸。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚀同,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出啊掏,到底是詐尸還是另有隱情蠢络,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布迟蜜,位于F島的核電站刹孔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏娜睛。R本人自食惡果不足惜髓霞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一卦睹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酸茴,春花似錦分预、人聲如沸兢交。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽配喳。三九已至酪穿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晴裹,已是汗流浹背被济。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涧团,地道東北人只磷。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像泌绣,于是被迫代替她去往敵國和親钮追。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 因新工作主要負(fù)責(zé)微信小程序這一塊阿迈,最近的重心就移到這一塊元媚,該博客是對微信小程序整體的整理歸納以及標(biāo)明一些細(xì)節(jié)點(diǎn),初...
    majun00閱讀 7,341評論 0 9
  • 每天的學(xué)習(xí)記錄苗沧,可能有的地方寫的不對刊棕,因?yàn)閯倢W(xué),以后發(fā)現(xiàn)錯的話會回來改掉整體流程 https://develope...
    有點(diǎn)健忘閱讀 4,674評論 0 7
  • 什么是微信小程序 騰訊公司于2016年9月21日開始微信小程序內(nèi)測待逞,一時間小程序的討論熱度不斷甥角。網(wǎng)絡(luò)上流傳一張張小...
    centuryscr閱讀 5,566評論 0 3
  • 微信小程序由于適用性強(qiáng)、邏輯簡要识樱、開發(fā)迅速的特性嗤无,疊加具有海量活躍用戶的騰訊公司背景,逐漸成為了輕量級單一功能應(yīng)用...
    純文筆記閱讀 4,046評論 1 9
  • 黑的牺荠,紅的翁巍,黃的; 顏色休雌。 喧嘩灶壶,叫嚷,呼喝杈曲。 嘈雜驰凛。 頭似乎是被按在加足了馬力的發(fā)動機(jī)上震動胸懈,腦漿在顱腔里打...
    炮哥的篝火世界閱讀 446評論 0 0