De nos jours, de nombreux scénarios de paiement sont réalisés sur les téléphones mobiles. À mesure que le développement des pages H5 devient de plus en plus pratique, de nombreux scénarios ont également été déplacés du client vers le navigateur, et le scénario de paiement est placé de manière très naturelle. le navigateur. Vous serez donc certainement familier avec une telle zone de saisie :
Alors aujourd'hui, je vais utiliser du code JavaScript pour obtenir cet effet. Alors, laissez-moi d'abord vous présenter l'ensemble. idée., nous allons d’abord déterminer le nombre de chiffres pour saisir le mot de passe. Mon exigence est de 5 chiffres, puis utiliser une balise p pour envelopper 5 balises d’entrée.
Et définissez l'attribut display: inline-block pour ces 5 entrées, et utilisez pour éliminer la valeur de marge directe de l'élément, le HTML ressemblera alors à ce qui suit :
<p 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="数" maxlength=""> </p>
Dans le code, il faut fixer le nombre maximum de chiffres de saisie, sinon ça ne ressemblera pas à ça~ Bien sûr, afin d'évoquer le clavier numérique lors de la saisie sur le terminal mobile, nous devons également définir type="tel". Ensuite, la prochaine étape est le code de style CSS. Ici, je publierai simplement du code. La réplique spécifique est ici~
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(,,,); } }
Ensuite, la prochaine étape est la partie JavaScript la plus critique,
<🎜. >/** * 模拟支付宝的密码输入形式 */ (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); } /** * 监听键盘的敲击事件 */ 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);