JavaScript Notes
HubYour First JavaScript Program — Hello World & Beyond Complete Guide 2026History of JavaScript — Complete Timeline from 1995 to 2026How JavaScript Runs — Complete Guide to Execution, Call Stack & Event LoopJavaScript Engine Explained — V8, JIT Compilation & How Code Gets FastJavaScript Use Cases — 15 Things You Can Build with JavaScript (2026)JavaScript vs Other Languages — Complete Comparison Guide 2026What is JavaScript? Complete BeginnerWhy Learn JavaScript in 2026? Career, Salary, Scope & Benefits GuideJavaScript Break Statement Tutorial – Complete Guide with ExamplesJavaScript Break and Continue Statements – Complete Guide with ExamplesJavaScript Continue Statement Tutorial – Skip Iterations with ExamplesJavaScript Do While Loop Tutorial – Execute at Least Once with ExamplesJavaScript Do-While Loop Tutorial – Complete Guide with ExamplesJavaScript For Loop Tutorial – Complete Guide with ExamplesJavaScript If Statement Tutorial – Conditional Logic with ExamplesJavaScript If Else Statement Tutorial – Complete Guide with ExamplesJavaScript If Statement Tutorial – Complete Guide with ExamplesJavaScript Nested If Statement Tutorial – Multi-Level Conditions with ExamplesNested Loops in JavaScriptJavaScript Control Flow Practice Programs – 20+ Exercises with SolutionsJavaScript Switch Statement Tutorial – Case Matching with ExamplesSwitch Statement in JavaScriptJavaScript While Loop Tutorial – Complete Guide with ExamplesJavaScript Arrow Functions Tutorial – Syntax, Use Cases & this BindingJavaScript Callback Functions Explained – Synchronous & AsynchronousJavaScript Closures Explained – Lexical Scope, Private State & MemoryJavaScript Function Declaration Tutorial – Hoisting, Syntax & ScopeJavaScript Function Expression Tutorial – Anonymous, Named & AssignedJavaScript Higher Order Functions Tutorial – map, filter, reduce & Custom HOFsJavaScript IIFE Explained – Immediately Invoked Function ExpressionJavaScript Functions Practice Programs – 20+ Exercises with SolutionsJavaScript Recursion Tutorial – Call Stack, Base Case & Recursive PatternsJavaScript Array Basics - Complete BeginnerJavaScript Array Methods - Complete Reference Guide with ExamplesJavaScript Array Programs - 20+ Practice Problems with SolutionsJavaScript Arrays Basics - Complete Guide with Examples & DiagramsJavaScript Array filter() Method - Complete Tutorial with ExamplesJavaScript filter() Method — Complete Guide with Examples 2026JavaScript Array find() Method - Complete Tutorial with ExamplesJavaScript find() & findIndex() — Complete Guide 2026JavaScript Array map() Method - Complete Tutorial with ExamplesJavaScript map() Method — Transform Arrays Complete Guide 2026JavaScript map() vs forEach() - Key Differences with ExamplesJavaScript Array push() and pop() - Complete Tutorial with ExamplesJavaScript Array reduce() Method - Complete Tutorial with ExamplesJavaScript reduce() Method — Complete Deep Dive with Examples 2026JavaScript Array shift() and unshift() - Complete Tutorial with ExamplesJavaScript Array sort() Method - Complete Tutorial with ExamplesJavaScript splice() vs slice() - Complete Tutorial with ExamplesJavaScript Object Destructuring - Complete Guide with ExamplesJavaScript Objects - Complete Guide to Object Basics with ExamplesJavaScript Object Methods - Built-in Methods & Custom Methods Complete GuideJavaScript Object Programs - Practice Problems with SolutionsJavaScript Object Properties - Keys, Values, Descriptors & Dynamic PropertiesJavaScript Rest Operator (...) - Parameters, Destructuring & Complete GuideJavaScript Spread Operator (...) - Complete Guide with ExamplesJavaScript this Keyword - Complete Guide with Binding Rules & ExamplesJavaScript String Basics - Complete Guide to Strings with ExamplesJavaScript String Methods - Complete Reference with Examples & OutputJavaScript String Programs - Practice Problems with SolutionsJavaScript String Replacing - replace(), replaceAll() & Regex Patterns GuideJavaScript String Searching Methods - includes, indexOf, startsWith, match GuideJavaScript Template Literals (ES6) - Complete Guide with Tagged TemplatesJavaScript DOM Changing Content - textContent, innerHTML, setAttribute Complete GuideJavaScript DOM Changing Styles - CSS Manipulation, classList & getComputedStyleJavaScript DOM Creating Elements - createElement, appendChild, DocumentFragment GuideJavaScript DOM Introduction - Complete Guide to Document Object ModelJavaScript DOM Traversal - Navigate Parent, Child & Sibling NodesJavaScript DOM Forms - Form Handling, Validation & FormData Complete GuideJavaScript localStorage - Complete Guide to Web Storage APIlocalStorage vs sessionStorage - JavaScript Web Storage Comparison GuideJavaScript DOM Removing Elements - remove(), removeChild() Complete GuideJavaScript DOM Selecting Elements - querySelector, getElementById Complete GuideJavaScript sessionStorage - Complete Guide to Session-Based Web StorageJavaScript Click Event - addEventListener, Event Handler Complete GuideEvent Bubbling in JavaScript – Complete Guide with Examples (2026)Event Capturing in JavaScript – Complete Guide to Capture Phase (2026)Event Delegation in JavaScript – Complete Guide with Examples (2026)JavaScript Event Object – Complete Guide with Examples (2026)JavaScript Form Events – Complete Guide with Examples (2026)JavaScript Keyboard Events – Complete Guide to keydown, keyup & Key Properties (2026)JavaScript Mouse Events – Complete Guide with Examples (2026)JavaScript Async Await - Complete Guide with Examples & Error HandlingJavaScript Call Stack - Complete Guide with Visual Diagrams & ExamplesJavaScript Callback Queue (Task Queue) - Complete Guide with DiagramsJavaScript Callbacks - Complete Guide with Callback Hell & PatternsJavaScript Event Loop - Complete Guide with Visual Diagrams & ExamplesJavaScript Fetch API - Complete Guide with Examples, Error Handling & Async/AwaitJSON in JavaScript - Complete Guide: Parse, Stringify, Fetch & Error HandlingJavaScript Promise.all, Promise.race, Promise.any, Promise.allSettled — Complete Guide 2026JavaScript Promises - Complete Guide with Chaining, Error Handling & Event LoopSynchronous vs Asynchronous JavaScript — Complete Explanation 2026JavaScript Web APIs - Complete Guide: setTimeout, fetch, DOM Events & MoreClosures in JavaScript — Complete Guide with Examples 2026Hoisting in JavaScript — Complete Guide with Examples 2026Prototype in JavaScript — Complete Guide with Examples 2026Scope in JavaScript — Complete Guide with Examples 2026Browser Object Model (BOM) in JavaScript — Complete GuideCanvas API in JavaScript — Complete Drawing & Animation GuideDrag and Drop API in JavaScript — Complete TutorialGeolocation API in JavaScript — Get User Location TutorialHistory API in JavaScript — SPA Routing & pushState GuideNotification API in JavaScript — Push Notifications TutorialService Workers in JavaScript — Offline, Caching & PWA GuideWeb Storage API in JavaScript — localStorage & sessionStorage GuideWeb Workers in JavaScript — Multithreading & Background Tasks GuideJavaScript Interview — Behavioral Questions and Soft Skills Guide 2026Common JavaScript Interview Mistakes — What to Avoid 2026JavaScript Interview Tips — Strategy and Preparation Guide 2026JavaScript Mock Interview — Practice Questions with Solutions 2026JavaScript System Design — Frontend Architecture Interview Guide 2026JavaScript apply() Method - Complete Guide with ExamplesJavaScript bind() Method - Complete Guide with ExamplesJavaScript call() Method - Complete Guide with ExamplesJavaScript call() vs apply() vs bind() - Complete Comparison GuideJavaScript Currying - Complete Guide with ExamplesJavaScript Debounce - Complete Guide with Timeline DiagramsJavaScript Execution Context - Complete Guide with Stack DiagramsJavaScript Garbage Collection - Memory Lifecycle & Mark-and-Sweep GuideJavaScript Generators - Complete Guide with yield and IterationJavaScript Hoisting - Complete Guide with var, let, const & FunctionsJavaScript Iterators - Complete Guide with Iterator ProtocolJavaScript Lexical Scope - Complete Guide with Scope Chain DiagramsJavaScript Memory Management - Complete Guide with Lifecycle DiagramsJavaScript Modules - Complete Guide with import export ExamplesJavaScript Scope - Complete Guide with var, let, const & Scope ChainJavaScript Symbols - Complete Guide with Well-Known SymbolsJavaScript Throttle - Complete Guide with Timeline DiagramsJavaScript Comments Complete Guide – Single Line, Multi-line & JSDoc with ExamplesJavaScript Data Types Complete Guide – Primitives, Objects & typeof with ExamplesJavaScript Input and Output Complete Guide – console.log, prompt, alert & DOM with ExamplesJavaScript Keywords Complete Guide – Reserved Words List with Examples for BeginnersJavaScript null vs undefined – Complete Guide with Differences, Examples & Interview Q&AJavaScript Operators Complete Guide – Arithmetic, Comparison, Logical & More with ExamplesJavaScript Strict Mode Complete Guide – JavaScript Type Conversion Complete Guide – Explicit & Implicit Coercion with ExamplesJavaScript var vs let vs const – Complete Guide with Scope, Hoisting & Best PracticesJavaScript Variables Complete Guide – Declaration, Naming Rules & Memory Model for BeginnersDeque (Double-Ended Queue) in JavaScript — Complete GuideLinked List in JavaScript — Nodes, Pointers & Operations GuideJavaScript Map — Key-Value Data Structure Complete GuideJavaScript Numbers — IEEE 754, Precision, and Number Methods GuidePriority Queue in JavaScript — Min Heap Implementation GuideQueue Data Structure in JavaScript — FIFO, Enqueue & Dequeue ExplainedJavaScript Set — Unique Values Data Structure GuideSorting Algorithms in JavaScript — Bubble, Merge, Quick Sort GuideStack Data Structure in JavaScript — LIFO, Push, Pop ExplainedJavaScript Typed Arrays — ArrayBuffer, Int32Array, Float64Array GuideJavaScript WeakMap — Weak References, Memory Management GuideJavaScript WeakSet — Complete Guide with Examples 2026Applications of JavaScript — Where JS is Used in 2026 Complete GuideJavaScript Backend Frameworks — Node.js, Express, NestJS Complete Guide 2026JavaScript Frontend Libraries — React, Vue, Angular, Svelte Complete Overview 2026JavaScript Full-Stack Frameworks — Next.js, Remix, Astro Complete Guide 2026JavaScript Career Paths & Jobs — Salary, Roles & Roadmap 2026JavaScript Libraries vs Frameworks — Difference & Examples Complete Guide 2026JavaScript Custom Errors – Extend Error Class, Custom Error Types & instanceofJavaScript Debugging – console Methods, DevTools, Breakpoints & Error Stack TracesJavaScript throw Statement – Throw Errors, Custom Messages & Error TypesJavaScript Try Catch Finally – Error Handling Complete GuideTop 30 JavaScript Closure Interview Questions & Answers 2026Top 30 JavaScript Coding Interview Questions 2026 (With Solutions)Top 25 JavaScript Event Loop Interview Questions & Answers 2026Top 50 JavaScript Interview Questions & Answers 2026Top 30 JavaScript Promise Interview Questions & Answers 202650 Tricky JavaScript Output Questions 2026 (With Answers)Build a JavaScript Calculator - Step by Step Project TutorialBuild a JavaScript Image Carousel - Step by Step Project TutorialBuild a JavaScript Counter Application - Step by Step Project TutorialBuild a JavaScript Digital Clock - Step by Step Project TutorialBuild a Dynamic Resume Builder in JavaScript - Step by Step TutorialBuild a JavaScript Email Validator - Step by Step Project TutorialBuild a JavaScript Employee Database Management App - Step by Step TutorialBuild a JavaScript Expense Tracker - Step by Step Project TutorialBuild a GitHub Profile Search App in JavaScript - Step by Step TutorialBuild a JavaScript Image Slider - Step by Step Project TutorialBuild a JavaScript Multi-Step Progress Bar - Step by Step TutorialBuild JavaScript Nested Chat Comments - Step by Step Project TutorialBuild a JavaScript Notes App - Step by Step Project TutorialBuild a JavaScript OTP Input Field - Step by Step Project TutorialBuild a JavaScript Palindrome Checker - Step by Step Project TutorialBuild a JavaScript Price Range Slider - Step by Step Project TutorialBuild a JavaScript Prime Number Checker - Step by Step Project TutorialBuild a JavaScript QR Code Generator - Step by Step Project TutorialBuild a JavaScript QR Code Scanner - Step by Step Project TutorialBuild a JavaScript Quiz App - Step by Step Project TutorialBuild a JavaScript Random Number Generator - Step by Step TutorialBuild a JavaScript Random Password Generator - Step by Step TutorialJavaScript Image Resize & Compress — Canvas API Project 2026JavaScript Responsive Admin Dashboard — DOM & CSS Project 2026JavaScript Show/Hide Password Toggle — Beginner DOM Project 2026JavaScript Sortable Filterable Table — DOM & Array Methods Project 2026JavaScript Stopwatch Project — setInterval & DOM Tutorial 2026JavaScript Student Grade Calculator — Arrays & Logic Project 2026JavaScript Task Scheduler Project — CRUD & localStorage Tutorial 2026JavaScript Tic-Tac-Toe Game — DOM Manipulation Project Tutorial 2026JavaScript Toast Notification Project — Custom Alerts Tutorial 2026Build a Todo App in JavaScript - Step by Step Project TutorialJavaScript Unicode Character Value Finder — charCodeAt & fromCharCode Project 2026JavaScript Weather App Project — Fetch API & DOM Complete Tutorial 2026JavaScript Cheat Sheet 2026 — Complete Quick ReferenceImportant JavaScript Concepts Every Developer Must Know in 2026JavaScript One Shot Notes 2026 — Complete JS in One PageJavaScript Quick Revision Notes — Interview Prep in 30 Minutes 2026Abstraction in JavaScript OOP – Hide Complexity, Expose SimplicityJavaScript Classes Tutorial – ES6 Class Syntax, Inheritance & MoreJavaScript Constructor Functions – new Keyword, Prototype & OOP PatternsEncapsulation in JavaScript – Private Fields, Getters, Setters & Data ProtectionJavaScript Inheritance – extends, super, and Prototype-Based InheritanceObject-Oriented Programming in JavaScript – OOP Concepts Complete GuideJavaScript OOP Projects – Build Real-World Apps with Classes & OOPPolymorphism in JavaScript – Method Overriding, Duck Typing & Many FormsJavaScript Prototype Chain – How Property Lookup Works in JavaScriptJavaScript Prototypes – Prototype-Based Inheritance, Object.create & prototype PropertyJavaScript Advanced Practice Problems — 15+ Interview-Level Challenges 2026JavaScript Assignments — 10 Project-Based Learning Tasks 2026JavaScript Beginner Practice Problems — 20+ Coding Exercises 2026JavaScript Coding Challenges — 25 Interview-Style Problems 2026JavaScript Intermediate Practice Problems — 20+ Coding Challenges 2026JavaScript MCQs — 50 Multiple Choice Questions with Answers 2026JavaScript Regex Character Classes – [abc], [^abc], Ranges & ShortcutsJavaScript Regex Email Validation – Pattern, Edge Cases & Best PracticesJavaScript Regex Flags – g, i, m, s, u, y Flags Explained with ExamplesJavaScript Regex Groups – Capturing, Non-Capturing & Named GroupsJavaScript Number Validation with Regex — Complete Patterns & Examples 2026JavaScript Password Validation with Regex — Strength Checker & Patterns 2026JavaScript Regex Quantifiers – *, +, ?, {n,m}, Greedy vs Lazy MatchingJavaScript Regex Basics – Regular Expressions Tutorial for BeginnersJavaScript Regex Projects — 10 Practical Mini-Projects with Code 2026JavaScript URL Validation with Regex — Complete Patterns & Examples 2026JavaScript Username Validation with Regex — Patterns & Form Examples 2026JavaScript TutorialJavaScript Lazy Loading — Images, Modules & Components Complete Guide 2026JavaScript Performance Optimization — Speed Up Your Code Complete Guide 2026JavaScript Unit Testing with Jest — Complete Guide for Beginners 2026
Learn to build an accessible OTP/PIN input field in JavaScript with auto-focus, backspace navigation, paste support, and timer-based resend functionality.
What You'll Learn
- How to create multiple single-digit input boxes that feel like one input
- How to auto-advance focus when a digit is entered
- How to move focus back with Backspace
- How to support paste of a 6-digit code in one action
- How to implement a countdown timer for resend functionality
Project Overview
OTP (One-Time Password) fields are the 4-6 digit code boxes you see on login and verification screens. Each box accepts exactly one digit, and the cursor jumps to the next box automatically, making the experience feel polished and native.
Component Structure
How It Works — Flow Diagram
Step-by-Step Build
Step 1 — HTML Structure
Example
<div class="otp-container">
<h2>Verification Code</h2>
<p>Enter the 6-digit code sent to your email</p>
<div class="otp-inputs" id="otpInputs">
<!-- Generated by JavaScript -->
</div>
<button id="verifyBtn" class="btn-verify" disabled>Verify Code</button>
<p class="resend-text">
<span id="timerDisplay">Resend code in: <strong id="countdown">0:59</strong></span>
<button id="resendBtn" class="btn-resend hidden">Resend Code</button>
</p>
<div id="resultMsg" class="result-msg"></div>
</div>
Step 2 — Generate Input Boxes
Example
const OTP_LENGTH = 6;
const otpContainer = document.getElementById("otpInputs");
function buildInputs() {
for (let i = 0; i < OTP_LENGTH; i++) {
const input = document.createElement("input");
input.type = "text";
input.inputMode = "numeric";
input.pattern = "[0-9]*";
input.maxLength = 1;
input.className = "otp-box";
input.dataset.idx = i;
input.autocomplete = "one-time-code";
otpContainer.appendChild(input);
}
}
buildInputs();
const boxes = [...document.querySelectorAll(".otp-box")];
Step 3 — Auto-Advance on Input
Example
boxes.forEach((box, i) => {
box.addEventListener("input", () => {
// allow only digits
box.value = box.value.replace(/[^0-9]/g, "");
if (box.value && i < OTP_LENGTH - 1) {
boxes[i + 1].focus();
}
updateVerifyButton();
});
Step 4 — Backspace Navigation
Example
box.addEventListener("keydown", (e) => {
if (e.key === "Backspace" && !box.value && i > 0) {
boxes[i - 1].value = "";
boxes[i - 1].focus();
}
// prevent non-numeric keys (allow: Backspace, Tab, ArrowKeys)
if (!/^\d$/.test(e.key) && !["Backspace","Tab","ArrowLeft","ArrowRight"].includes(e.key)) {
e.preventDefault();
}
});
Step 5 — Paste Handler
Example
box.addEventListener("paste", (e) => {
e.preventDefault();
const pasted = (e.clipboardData || window.clipboardData)
.getData("text")
.replace(/\D/g, "") // keep only digits
.slice(0, OTP_LENGTH);
pasted.split("").forEach((char, idx) => {
if (boxes[idx]) boxes[idx].value = char;
});
// focus the next empty box or the last box
const nextEmpty = boxes.findIndex(b => !b.value);
(nextEmpty !== -1 ? boxes[nextEmpty] : boxes[OTP_LENGTH - 1]).focus();
updateVerifyButton();
});
});
Step 6 — Verify Button & Get OTP Value
Example
function getOTP() {
return boxes.map(b => b.value).join("");
}
function updateVerifyButton() {
const otp = getOTP();
document.getElementById("verifyBtn").disabled = otp.length < OTP_LENGTH;
}
document.getElementById("verifyBtn").addEventListener("click", () => {
const otp = getOTP();
const resultMsg = document.getElementById("resultMsg");
// Simulated verification — replace with real API call
if (otp === "123456") {
resultMsg.textContent = "✅ Code verified successfully!";
resultMsg.className = "result-msg success";
} else {
resultMsg.textContent = "❌ Incorrect code. Please try again.";
resultMsg.className = "result-msg error";
boxes.forEach(b => { b.value = ""; b.classList.add("shake"); });
setTimeout(() => boxes.forEach(b => b.classList.remove("shake")), 500);
boxes[0].focus();
}
updateVerifyButton();
});
Step 7 — Countdown Timer for Resend
Example
let remainingSeconds = 59;
let timerInterval;
function startTimer() {
timerInterval = setInterval(() => {
remainingSeconds--;
const m = Math.floor(remainingSeconds / 60);
const s = remainingSeconds % 60;
document.getElementById("countdown").textContent = `${m}:${String(s).padStart(2,"0")}`;
if (remainingSeconds <= 0) {
clearInterval(timerInterval);
document.getElementById("timerDisplay").classList.add("hidden");
document.getElementById("resendBtn").classList.remove("hidden");
}
}, 1000);
}
document.getElementById("resendBtn").addEventListener("click", () => {
remainingSeconds = 59;
document.getElementById("timerDisplay").classList.remove("hidden");
document.getElementById("resendBtn").classList.add("hidden");
boxes.forEach(b => b.value = "");
boxes[0].focus();
startTimer();
});
startTimer();
boxes[0].focus();
Console Output
Output
// User types "1" input event on box[0] → value = "1" → focus box[1] // User types "2" input event on box[1] → value = "2" → focus box[2] // User presses Backspace on empty box[2] keydown → box[2] is empty → clear box[1], focus box[1] // User pastes "123456" paste event → distributed: boxes = ["1","2","3","4","5","6"] All boxes filled → verifyBtn.disabled = false // User clicks Verify with "123456" getOTP() → "123456" Correct! → resultMsg: "✅ Code verified successfully!" // User clicks Verify with "999999" Incorrect → shake animation → boxes cleared → focus box[0]
Edge Cases to Handle
| Situation | Expected Behavior |
|---|---|
| Type non-digit character | Blocked by e.preventDefault() |
| Paste partial code (3 digits) | Fill first 3 boxes, focus 4th |
| Paste letters | Strip non-digits with regex |
| Backspace on first box | Clear value, stay focused |
| Verify with incomplete code | Button stays disabled |
Challenge Yourself
- SMS auto-fill —
autocomplete="one-time-code"already helps on mobile — test it - Error animation — animate boxes shaking left/right on wrong code
- Masked input — hide entered digits as
●like a PIN pad - Custom length — make
OTP_LENGTHa configuration option (4, 6, or 8 digits) - API verification — replace the hardcoded check with a real
fetchPOST request
Best Practices
- Set
inputMode="numeric"andpattern="[0-9]*"for proper mobile keyboard - Handle both
inputandkeydown— they serve different purposes - Paste handling must call
e.preventDefault()to take control of the clipboard data - The
autocomplete="one-time-code"attribute enables browser/OS auto-fill - Always call
focus()programmatically to guide the user's cursor seamlessly
Continue the lesson path
Study next in this module
01Mini ProjectsBuild a JavaScript Notes App - Step by Step Project TutorialLearn to build a notes app in JavaScript with create, edit, delete, search, pin, and localStorage persistence. Covers markdown preview and color coding.02Mini ProjectsBuild a JavaScript Palindrome Checker - Step by Step Project TutorialLearn to build a palindrome checker in JavaScript with real-time detection, punctuation stripping, case normalization, and visual character highlighting.03Mini ProjectsBuild JavaScript Nested Chat Comments - Step by Step Project TutorialLearn to build a nested threaded comment system in JavaScript with recursive rendering, reply, like, collapse/expand, and depth-limited nesting.04Mini ProjectsBuild a JavaScript Price Range Slider - Step by Step Project TutorialLearn to build a dual-handle price range slider in JavaScript with min/max thumb dragging, range highlighting, live price display, and product filtering.