jquery仿移動端支付寶鍵盤

来源:https://www.cnblogs.com/xiaohuangmao/archive/2018/08/14/9475877.html
-Advertisement-
Play Games

最近做項目時碰到一個需求,就是在移動端支付頁面點擊支付按鈕彈出一個支付鍵盤,類似於支付寶的那種。由於項目只是單純的手機網站,而並非app,所以這個功能得由前端來實現。話不多說,先上圖看看效果。 尼瑪,這不就是支付寶app那個支付鍵盤嗎? 沒錯,咱們UI就是參照支付寶做的這個鍵盤。你可能會問,為什麼不 ...


最近做項目時碰到一個需求,就是在移動端支付頁面點擊支付按鈕彈出一個支付鍵盤,類似於支付寶的那種。由於項目只是單純的手機網站,而並非app,所以這個功能得由前端來實現。話不多說,先上圖看看效果。

 

 

尼瑪,這不就是支付寶app那個支付鍵盤嗎? 沒錯,咱們UI就是參照支付寶做的這個鍵盤。你可能會問,為什麼不直接調用支付寶提供的支付介面呢。額,因為項目需要,這裡就不多解釋了。

我們先看一下實現後的效果圖

           

 

HTML部分

 

 1 <!-- 支付鍵盤 -->
 2     <divclass="pay-container">
 3         <divclass="pay-title">
 4             <spanclass="pay-title-remove">×</span>
 5             輸入支付密碼
 6         </div>
 7         <divclass="pay-body">
 8             <divclass="input-container">
 9                 <inputclass="input-item"type="password"readonly>
10                 <inputclass="input-item"type="password"readonly>
11                 <inputclass="input-item"type="password"readonly>
12                 <inputclass="input-item"type="password"readonly>
13                 <inputclass="input-item"type="password"readonly>
14                 <inputclass="input-item"type="password"readonly>
15             </div>
16             <divclass="forgetPwd-container">
17                 <aclass="forgetPwd"href="">忘記密碼?</a>
18             </div>
19             <divclass="key-container">
20                 <divclass="key-item">1</div>
21                 <divclass="key-item">2</div>
22                 <divclass="key-item">3</div>
23                 <divclass="key-item">4</div>
24                 <divclass="key-item">5</div>
25                 <divclass="key-item">6</div>
26                 <divclass="key-item">7</div>
27                 <divclass="key-item">8</div>
28                 <divclass="key-item">9</div>
29                 <divclass="key-item empty"></div>
30                 <divclass="key-item">0</div>
31                 <divclass="key-item remove"></div>
32             </div>
33         </div>
34     </div>

 

CSS部分

 1 .pay-container{ width:7.5rem; height:8rem; background-color:#fbf9fb; position:fixed;z-index:999; overflow:hidden;display:none; }
 2 /* .pay-container-show{transform: translate3d(0, -8.9rem, 0);transition: 0.5s ease;transform: translate3d(0, 0, 0); transition: 0.5s ease;} */
 3 .pay-title{ height:0.96rem; line-height:0.96rem; border-bottom:1pxsolid#b3afaf; text-align:center; color:#070707;
 4 position:relative; font-size:0.36rem;}
 5 .pay-title.pay-title-remove{ width:0.24rem; height:0.24rem; position:absolute; top:0.35rem; left:0.33rem; line-height:0.28rem;
 6 font-size:0.45rem;}
 7 .pay-body{ padding-top:0.56rem;position:relative; height:7rem; box-sizing:border-box;}
 8 .pay-body.input-container{ width:6.74rem; height:0.93rem; border:1pxsolid#ebe8eb; overflow:hidden; border-radius:5px;
 9 background-color:#fff; margin:0auto; display:flex;flex-direction:row;align-items:center; 
10 flex-wrap:wrap; justify-content:center;align-content:center;}
11 .pay-body.input-container.input-item{ width:1.1rem; height:0.92rem; display:inline-block; margin:0; border-right:1pxsolid#ebe8eb;
12 text-align:center; line-height:0.92rem; border-radius:0; }
13 .pay-body.input-container.input-item:nth-last-child(1){ border-right:0;}
14 .pay-body.forgetPwd-container{width:6.74rem;margin:0.22remauto0; text-align:right;}
15 .pay-body.forgetPwd-container.forgetPwd{ color:#52bfff; font-size:0.24rem; }
16 .pay-body.key-container{ width:100%; height:4.56rem; position:absolute; bottom:0; display:flex;flex-direction:row;align-items:center; 
17     flex-wrap:wrap; justify-content:center;align-content:center; }
18 .pay-body.key-container.key-item{ width:2.47rem; height:1.12rem; line-height:1.12rem; text-align:center; border-right:2pxsolid#f3f3f3;
19     border-top:2pxsolid#f3f3f3; font-size:0.66rem; color:#1e1d1f;background-color:#fff;}
20 .pay-body.key-container.key-item:nth-child(3),
21 .pay-body.key-container.key-item:nth-child(6),
22 .pay-body.key-container.key-item:nth-child(9),
23 .pay-body.key-container.key-item:nth-child(12){ border-right:0;}
24 .pay-body.key-container.key-item.remove,.pay-body.key-container.key-item.empty{ font-size:0.24rem;background-color:#e6e9f1;}
25 .pay-body.key-container.key-item.remove{ background:url('../images/pay-remove.png') centerno-repeat#e6e9f1; background-size:.52rem.32rem; }
26 .pay-body.key-container.selected{ background-color:#e4e8f4;}

 

 核心JS部分

 1 var arr = [];
 2         var num =0;
 3 
 4         //響應鍵盤事件
 5         $('.key-item').on('touchstart', function () {
 6             $(this).addClass('selected')
 7         })
 8         $('.key-item').on('touchend', function () {
 9             $(this).removeClass('selected')
10         })
11         $('.key-item').on('click', function () {
12             var value =$(this).text();
13             var inputItem =$('.layui-m-layercont .input-item');
14             if (!$(this).hasClass('remove')) {
15                 if (num <6) {
16                     $(inputItem[num]).val(value);
17                     if (num ==5) {
18                         var arr = [];
19                         for (var i =0; i < inputItem.length; i++) {
20                             arr.push(inputItem[i].value)
21                         }
22                         arr =parseInt(arr.join(''));
23                         if (arr !==123456) {
24                             layer.open({
25                                 content:'支付密碼錯誤請重新輸入!',
26                                 skin:'msg',
27                                 time:2//2秒後自動關閉
28                             });
29                         } else {
30                             layer.open({
31                                 content:'輸入正確!',
32                                 skin:'msg',
33                                 time:2//2秒後自動關閉
34                             });
35                         }
36                         num++;
37                         returnfalse;
38                     }
39                     num++;
40                 }
41             } else {
42                 if (num >0) {
43                     num--;
44                     $(inputItem[num]).val('');
45                 }
46             }
47         })

 

代碼就這麼多,也不複雜。可能寫的比較粗陋,但是效果能出來。

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在上篇文章《MySQL表結構變更,不可不知的Metadata Lock》中,我們介紹了MDL引入的背景,及基本概念,從“道”的層面知道了什麼是MDL。下麵就從“術”的層面看看如何定位MDL的相關問題。 在MySQL 5.7中,針對MDL,引入了一張新表performance_schema.metad ...
  • 昨天一臺SQL Server 2008R2的資料庫在凌晨5點多拋出下麵告警信息: The log scan number (620023:3702:1) passed to log scan in database 'xxxx' is not valid. This error may indica... ...
  • 轉載自:iOS多線程全套:線程生命周期,多線程的四種解決方案,線程安全問題,GCD的使用,NSOperation的使用 一、多線程的基本概念 進程:可以理解成一個運行中的應用程式,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎,主要管理資源。 線程:是進程的基本執行單元,一個進程對應多個線 ...
  • 一,效果圖。 二,代碼。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>html 圖像</title> </head> <body> <!--插入圖像--> <p> An image:<img sr="smiley.gif" ...
  • 作為前端最火的構建工具,是前端自動化工具鏈 最重要的部分 ,使用門檻較高。本系列是筆者自己的學習記錄,比較基礎,希望通過 問題 + 解決方式 的模式,以前端構建中遇到的具體需求為出發點,學習 工具中相應的處理辦法。(本篇中的參數配置及使用方式均基於 ) 一. webpack中的html 對於瀏覽器而 ...
  • 簡單定義:根據不同參數長度來實現讓同一個函數,進行不同處理。 使用: 測試: ...
  • 無意看了這篇 "《jQuery插件開發精品教程,讓你的jQuery提升一個臺階》" 文章,現在做一下總結。 一、jQuery插件的創建可以有三種方法 1.通過$.extend()來擴展jQuery 2.通過$.fn 向jQuery添加新的方法 3.通過$.widget()應用jQuery UI的部件 ...
  • 話不多說直接上代碼 因為項目需求,該動畫中需要顯示即時更新的數據,所以和普通的canvas畫出來的不一樣。但是又不能直接把html畫到canvas中去,彆著急有辦法。 為了繪製 HTML 內容,你要先用<foreignObject> 元素包含 HTML 內容,然後再將這個 SVG 圖像繪製到你的 c ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...