OTP Input UI
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>OTP Input UI</title> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> <style> /* Centering the container and styling the inputs */ .otp-container { display: flex; justify-content: center; align-items: center; margin-top: 20px; } .otp-input { width: 50px; height: 50px; font-size: 24px; text-align: center; border: 2px solid #ced4da; border-radius: 5px; margin: 0 8px; outline: none; transition: border-color 0.3s ease-in-out; } .otp-input:focus { border-color: #007bff; box-shadow: 0 0 5px rgba(0, 123, 255, 0.5); } .container { max-width: 500px; margin: auto; } .btn-primary { font-size: 18px; padding: 10px 20px; } </style> </head> <body> <div class="container mt-5"> <h2 class="text-center">Enter OTP</h2> <p class="text-center text-muted">Enter the 6-digit code sent to your registered number</p> <div class="otp-container"> <input type="text" maxlength="1" class="form-control otp-input" data-index="0" /> <input type="text" maxlength="1" class="form-control otp-input" data-index="1" /> <input type="text" maxlength="1" class="form-control otp-input" data-index="2" /> <input type="text" maxlength="1" class="form-control otp-input" data-index="3" /> <input type="text" maxlength="1" class="form-control otp-input" data-index="4" /> <input type="text" maxlength="1" class="form-control otp-input" data-index="5" /> </div> <div class="text-center mt-4"> <button class="btn btn-primary" id="submitOtp">Submit OTP</button> </div> </div> <!-- Bootstrap JS and jQuery --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> <script> $(document).ready(function () { // Move to the next input and select its value $(".otp-input").on("input", function () { const input = $(this); const index = parseInt(input.data("index")); const value = input.val(); // Automatically focus and select the next input field if (value.length === 1) { const nextInput = $(`.otp-input[data-index='${index + 1}']`); if (nextInput.length) { nextInput.focus().select(); } } }); // Handle backspace to move to the previous input and select its value $(".otp-input").on("keydown", function (e) { const input = $(this); const index = parseInt(input.data("index")); if (e.key === "Backspace" && input.val() === "") { const prevInput = $(`.otp-input[data-index='${index - 1}']`); if (prevInput.length) { prevInput.focus().select(); } } }); // Gather OTP and submit $("#submitOtp").on("click", function () { const otp = $(".otp-input") .map(function () { return $(this).val(); }) .get() .join(""); alert(`Entered OTP: ${otp}`); }); }); </script> </body> </html>