JavaScript仿支付寶密碼輸入框
現(xiàn)在很多時候大家付款的場景都是在手機上面,而隨著H5頁面的開發(fā)變得越來越方便,很多場景也從客戶端搬到了瀏覽器中,其中支付這個場景就很自然的被放在了瀏覽器中。那么這樣的輸入框大家一定不會陌生吧:
那么今天我就用JavaScript代碼來實現(xiàn)這個效果吧,那么首先介紹一下整個的思路,首先我們先將確定輸入密碼的位數(shù),我的需求是5位,那么就用一個div標簽包住5個input標簽。
并且給這個5個input設(shè)置display: inline-block 屬性,同時用<!- ->來消除元素直接的margin值,那么HTML就是如下的樣子:
<div class="input"> <input type="tel" placeholder="隨" maxlength=""><!- -><input type="tel" placeholder="機" maxlength=""><!- -><input type="tel" placeholder="" maxlength=""><!- -><input type="tel" placeholder="位" maxlength=""><!- -><input type="tel" placeholder="數(shù)" maxlength=""> </div>
在代碼中我們需要設(shè)置最多輸入的位數(shù),不然就不像了嘛~當然為了在移動端輸入的時候能喚起數(shù)字鍵盤來,我們也需要設(shè)置type="tel"。那么接下來就是CSS樣式的代碼了,這里我就簡單的貼出一些代碼,具體高仿的像不像其實就是這里了~
input { display: inline-block; &:last-child { border-right: px solid #; } input { border-top: px solid #; border-bottom: px solid #; border-left: px solid #; width: px; height: px; outline:none; font-family: inherit; font-size: px; font-weight: inherit; text-align: center; line-height: px; color: #ccc; background: rgba(,,,); } }
那么接下來就是最關(guān)鍵的JavaScript部分了,
/** * 模擬支付寶的密碼輸入形式 */ (function (window, document) { var active = , inputBtn = document.querySelectorAll('input'); for (var i = ; i < inputBtn.length; i++) { inputBtn[i].addEventListener('click', function () { inputBtn[active].focus(); }, false); inputBtn[i].addEventListener('focus', function () { this.addEventListener('keyup', listenKeyUp, false); }, false); inputBtn[i].addEventListener('blur', function () { this.removeEventListener('keyup', listenKeyUp, false); }, false); } /** * 監(jiān)聽鍵盤的敲擊事件 */ function listenKeyUp() { var beginBtn = document.querySelector('#beginBtn'); if (!isNaN(this.value) && this.value.length != ) { if (active < ) { active += ; } inputBtn[active].focus(); } else if (this.value.length == ) { if (active > ) { active -= ; } inputBtn[active].focus(); } if (active >= ) { var _value = inputBtn[active].value; if (beginBtn.className == 'begin-no' && !isNaN(_value) && _value.length != ) { beginBtn.className = 'begin'; beginBtn.addEventListener('click', function () { calculate.begin(); }, false); } } else { if (beginBtn.className == 'begin') { beginBtn.className = 'begin-no'; } } } })(window, document);
首先我們對最外層的div進行監(jiān)聽,當發(fā)現(xiàn)用戶選擇div的時候就將input的焦點設(shè)置到active上面去,而這個active則是一個計數(shù)器,默認的時候是第一位的,也就是0,而當我們輸入了正確的數(shù)字后將會增加一個active,這樣input的焦點就會向后移動了,這樣就完成了輸入一個向后移動一位的功能了,而同時我們監(jiān)聽鍵盤上的退格鍵,當用戶點擊了退格鍵之后就對active減一,這樣輸入框的焦點也就向前移動了,當然,當input失去焦點的時候我們也同時移除綁定在上面的監(jiān)聽事件,這樣就不會造成多次觸發(fā)的問題了。
其實這樣梳理下來會發(fā)現(xiàn)整個效果還是很簡單的,只需要控制好一個焦點的移動就好了,而我覺得整個組件的重點還是在CSS樣式的模仿上面~畢竟JavaScript的邏輯沒有什么難的~最后祝大家元旦快樂啦~(*^__^*) ~~
以上代碼給大家簡單介紹了JavaScript仿支付寶密碼輸入框的全部敘述,希望大家喜歡。
相關(guān)文章
通過js簡單實現(xiàn)將一個文本內(nèi)容轉(zhuǎn)譯成加密文本
將文本內(nèi)容轉(zhuǎn)譯成加密文本,在某些情況下還是比較實用的,下面通過js簡單實現(xiàn)下,感興趣的朋友不要錯過2013-10-10IE6背景圖片不緩存問題解決方案及圖片使用策略多個方法小結(jié)
最近發(fā)現(xiàn)的Web項目在IE6下出現(xiàn)背景圖片不緩存的問題,在網(wǎng)上搜索了一番,發(fā)現(xiàn)已經(jīng)是眾所周知的BUG,這里就總結(jié)一下各種解決辦法2012-05-05微信小程序?qū)嵺`之動態(tài)控制組件的顯示/隱藏功能
這篇文章主要介紹了微信小程序?qū)嵺`之動態(tài)控制組件的顯示/隱藏功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07Javascript獲取統(tǒng)一管理的提示語(message)
這篇文章主要介紹了Javascript獲取統(tǒng)一管理的提示語(message)的相關(guān)資料,需要的朋友可以參考下2016-02-02