| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /**
- * Page auth two steps
- */
- 'use strict';
-
- document.addEventListener('DOMContentLoaded', function () {
- // Self-executing function to initialize event listeners and form validation
- (() => {
- const maskWrapper = document.querySelector('.numeral-mask-wrapper');
- const twoStepsForm = document.querySelector('#twoStepsForm');
-
- if (maskWrapper) {
- // Loop through each child of the mask wrapper
- Array.from(maskWrapper.children).forEach(pin => {
- pin.addEventListener('keyup', e => {
- // Only handle numeric keys or backspace
- if (/^\d$/.test(e.key)) {
- // Move focus to the next field if maxlength is reached
- if (pin.nextElementSibling && pin.value.length === parseInt(pin.getAttribute('maxlength'))) {
- pin.nextElementSibling.focus();
- }
- } else if (e.key === 'Backspace') {
- // Move focus to the previous field on backspace
- if (pin.previousElementSibling) {
- pin.previousElementSibling.focus();
- }
- }
- });
-
- pin.addEventListener('keypress', e => {
- // Prevent entering the minus key
- if (e.key === '-') {
- e.preventDefault();
- }
- });
- });
- }
-
- // Form validation for OTP
- if (twoStepsForm) {
- const numeralMaskList = twoStepsForm.querySelectorAll('.numeral-mask');
-
- // Keyup handler to update OTP value
- const keyupHandler = () => {
- let otpComplete = true;
- let otpValue = '';
-
- numeralMaskList.forEach(maskElement => {
- if (maskElement.value === '') {
- otpComplete = false;
- }
- otpValue += maskElement.value;
- });
-
- twoStepsForm.querySelector('[name="otp"]').value = otpComplete ? otpValue : '';
- };
-
- numeralMaskList.forEach(maskElement => {
- maskElement.addEventListener('keyup', keyupHandler);
- });
-
- // Initialize form validation if FormValidation is defined
- if (typeof FormValidation !== 'undefined') {
- FormValidation.formValidation(twoStepsForm, {
- fields: {
- otp: {
- validators: {
- notEmpty: {
- message: 'Please enter OTP'
- }
- }
- }
- },
- plugins: {
- trigger: new FormValidation.plugins.Trigger(),
- bootstrap5: new FormValidation.plugins.Bootstrap5({
- eleValidClass: '',
- rowSelector: '.form-control-validation'
- }),
- submitButton: new FormValidation.plugins.SubmitButton(),
- defaultSubmit: new FormValidation.plugins.DefaultSubmit(),
- autoFocus: new FormValidation.plugins.AutoFocus()
- }
- });
- }
- }
- })();
- });
|