仿app端密碼輸入框

前端入坑紀(jì) 32

今天是個(gè)雙更的日子僻爽,也是個(gè)值得多多努力的日子。
未來(lái)的你贾惦,也一定會(huì)感謝如今勤耕不挫的自己胸梆!

最近呢敦捧,碰到個(gè)類似APP端密碼輸入框的效果,除了限制單個(gè)數(shù)字輸入碰镜,還得自動(dòng)focus到下一個(gè)input里兢卵,所以js關(guān)鍵不可少啊。

閑言少敘绪颖,直入正題秽荤。

效果圖

OK,first things first柠横!項(xiàng)目鏈接

HTML 結(jié)構(gòu)
<p class="tipsPgf">輸入提現(xiàn)密碼,完成身份驗(yàn)證</p>
    <div id="passdWrp">
        <span class="active">
            <input type="password" tabindex="0" minlength="1" maxlength="1" name="">
        </span>
        <span>
            <input type="password" tabindex="1" minlength="1" maxlength="1" name="">
        </span>
        <span>
            <input type="password" tabindex="2" minlength="1" maxlength="1" name="">
        </span>
        <span>
            <input type="password" tabindex="3" minlength="1" maxlength="1" name="">
        </span>
        <span>
            <input type="password" tabindex="4" minlength="1" maxlength="1" name="">
        </span>
        <span>
            <input type="password" tabindex="5" minlength="1" maxlength="1" name="">
        </span>
        <div class="wrpBs">
            <a id="sureBtn" href="javascript:;">確定</a>
        </div>

    </div>

每個(gè)input都絕對(duì)定位到包裹它的span里窃款,每個(gè)span都是自適應(yīng)寬高

CSS 結(jié)構(gòu)
body {
            margin: 0;
            padding: 0;
            background-color: #F4F4F4
        }
        
        input {
            border: none;
            outline: none;
            background: none;
        }
        
        a {
            outline: none;
            text-decoration: none;
        }
        
        .tipsPgf {
            font-size: 16px;
            color: #5e5e5e;
            letter-spacing: 0.86px;
            text-align: center;
            width: 80%;
            margin: 3% auto;
        }
        
        #passdWrp {
            text-align: center
        }
        
        #passdWrp span {
            position: relative;
            display: inline-block;
            padding: 6.5%;
            background-color: #fff;
            margin: 3px 2px;
        }
        
        #passdWrp span input {
            font-size: 14px;
            position: absolute;
            width: 100%;
            height: 100%;
            top: 0;
            left: 0;
            line-height: 30px;
            text-align: center;
        }
        
        .wrpBs {
            width: 96%;
            margin: 5% auto
        }
        
        .wrpBs a {
            display: block;
            margin: 0 4%;
            width: 92%;
            height: 45px;
            line-height: 45px;
            border-radius: 4px;
            text-align: center;
            background-color: #4990e2;
            color: #fff;
            font-size: 16px;
        }

都是些常規(guī)的css布局樣式,沒(méi)什么特殊的style

JS 結(jié)構(gòu)
        var mInput = document.getElementsByTagName("input");
        var sBtn = document.getElementById("sureBtn");


        // 進(jìn)入頁(yè)面時(shí)焦點(diǎn)到第一個(gè)input輸入框
        mInput[0].focus();

      // 點(diǎn)擊某個(gè)input時(shí)牍氛,重置它和后面的input值為空
        for (var l = 0; l < mInput.length; l++) {
            mInput[l].ontouchstart = function() {
                var indx = this.getAttribute("tabindex");
                for (var i = indx; i < mInput.length; i++) {
                    mInput[i].value = "";
                }
            }

        }


        // 點(diǎn)擊確定按鈕時(shí)晨继,判斷是否為空,如果不為空搬俊,則推入到數(shù)組中打印到控制臺(tái)
        sBtn.onclick = function() {
            var passArr = [];
            for (var l = 0; l < mInput.length; l++) {
                if (mInput[l].value != "") {
                    passArr.push(mInput[l].value);
                } else {
                    alert("有未填項(xiàng)紊扬!");
                    return;
                }

            }
            console.log(passArr)
        }



        // 這里就是判斷輸入為數(shù)字,并自動(dòng)下移一個(gè)input的函數(shù)
        for (var i = 0; i < mInput.length; i++) {

            mInput[i].addEventListener("keyup", function(evt) {
                var indx = this.getAttribute("tabindex");// 獲取當(dāng)前input的tabindex
                var _val = this.value;// 獲取當(dāng)前input里面的值
                if (_val.match(/\d/)) {// 判斷是否為數(shù)字
                    indx++;

                  如果下一個(gè)input已經(jīng)是末尾了悠抹,自動(dòng)focus到確定按鈕
                    if (indx == mInput.length) {
                        sBtn.focus();
                    }

                  // 70毫秒后珠月,焦點(diǎn)至下一個(gè)input
                    setTimeout(function() {
                        mInput[indx].focus();
                    }, 70);
                } else {
                    this.value = "";
                    alert("請(qǐng)輸入數(shù)字")
                }

             // 這里是最坑爹的,在電腦端模擬是有值的楔敌。可是到了移動(dòng)端獲取不到驻谆,初步估計(jì)是用了第三方輸入法卵凑。求助知道的小伙伴,求解惑JるI茁!
                 console.log(evt.key);

            })
        }

基本到這里象对,就算是大功告成了黑忱。有興趣的小伙伴可以研究下,加油哦勒魔!

好了甫煞,到此,本文告一段落冠绢!感謝您的閱讀抚吠!祝你身體健康,闔家幸福弟胀!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楷力,一起剝皮案震驚了整個(gè)濱河市喊式,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萧朝,老刑警劉巖岔留,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異检柬,居然都是意外死亡贸诚,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門厕吉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)酱固,“玉大人,你說(shuō)我怎么就攤上這事头朱≡吮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵项钮,是天一觀的道長(zhǎng)班眯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)烁巫,這世上最難降的妖魔是什么署隘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮亚隙,結(jié)果婚禮上磁餐,老公的妹妹穿的比我還像新娘。我一直安慰自己阿弃,他們只是感情好诊霹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著渣淳,像睡著了一般脾还。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上入愧,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天鄙漏,我揣著相機(jī)與錄音,去河邊找鬼棺蛛。 笑死怔蚌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鞠值。 我是一名探鬼主播媚创,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼彤恶!你這毒婦竟也來(lái)了钞钙?” 一聲冷哼從身側(cè)響起鳄橘,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎芒炼,沒(méi)想到半個(gè)月后瘫怜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡本刽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年鲸湃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片子寓。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡暗挑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斜友,到底是詐尸還是另有隱情炸裆,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布鲜屏,位于F島的核電站烹看,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏洛史。R本人自食惡果不足惜惯殊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望也殖。 院中可真熱鬧土思,春花似錦、人聲如沸毕源。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)霎褐。三九已至,卻和暖如春该镣,著一層夾襖步出監(jiān)牢的瞬間冻璃,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工损合, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留省艳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓嫁审,卻偏偏與公主長(zhǎng)得像跋炕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子律适,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理辐烂,服務(wù)發(fā)現(xiàn)遏插,斷路器,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 本文轉(zhuǎn)載自:眾成翻譯譯者:為之漫筆鏈接:http://www.zcfy.cc/article/239原文:http...
    極樂(lè)君閱讀 7,374評(píng)論 1 62
  • 入豆瓣纠修,扔節(jié)操胳嘲。入豆瓣,毀一生扣草。
    wenky_baby閱讀 184評(píng)論 0 1
  • 一了牛、區(qū)塊鏈 1. 分布式去中心化 比特幣設(shè)計(jì)的初衷就是要避免依賴中心化的機(jī)構(gòu),沒(méi)有發(fā)行機(jī)構(gòu)辰妙,也不可能操縱發(fā)行數(shù)量鹰祸。...
    Tenny1225閱讀 33,679評(píng)論 5 35
  • 越長(zhǎng)大越會(huì)發(fā)現(xiàn)身邊形形色色的人群蛙婴,大家不同的出身背景,不同的生活環(huán)境肴掷,形成了每個(gè)人不同的人生觀和價(jià)值觀敬锐,除...
    小朱繪本館閱讀 574評(píng)論 0 3