This JavaScript code snippet provides real-time validation for a password input field to check if it is weak or strong. It checks various criteria to ensure password strength. The code listens for a keyup
event on the password field and performs the following checks for a strong password:
- Minimum character length of 8
- Presence of at least one lowercase letter
- Presence of at least one uppercase letter
- Presence of at least one special character or number
Each requirement is visually indicated using CSS classes on corresponding helper text elements. If all requirements are met, the password field’s parent element is marked as valid. Otherwise, the parent element is marked as invalid.
The code utilizes helper functions to add or remove CSS classes and check for the presence of a class on an element. By implementing this code, users can receive immediate feedback on the strength and validity of their chosen password.
How to Create Strong Password Validation in Javascript
Create the HTML form element with an input for the password field as follows:
<form> <label for="password">Password</label> <!-- change type to text to see the password --> <input class="password" name="password" type="password" /> <ul class="helper-text"> <li class="length">Must be at least 8 characters long.</li> <li class="lowercase">Must contain a lowercase letter.</li> <li class="uppercase">Must contain an uppercase letter.</li> <li class="special">Must contain a number or special character.</li> </ul> </form>
Style the password field using the following CSS styles. These CSS rules are optional, you can define your own CSS according to your needs.
html, body { height: 100%; } body { display: flex; justify-content: center; align-items: center; background: green; color: #454545; } body * { box-sizing: border-box; } body *:focus { outline: 0; } form { width: 320px; height: 224px; padding: 35px; background: #ffffff; } form label { display: block; font-weight: bold; margin-bottom: 6px; } form input[type=text], form input[type=password] { display: block; height: 36px; margin-bottom: 8px; padding: 0 36px 0 10px; border: 2px solid green; font-size: 16px; letter-spacing: 1px; } form ul.helper-text { display: block; margin-top: 6px; font-size: 12px; line-height: 22px; color: red; } form ul.helper-text li.valid { color: blue; } form.valid input { border: 2px solid blue; }
Finally, use the following JavaScript function to validate the password:
(function(){ var password = document.querySelector('.password'); var helperText = { charLength: document.querySelector('.helper-text .length'), lowercase: document.querySelector('.helper-text .lowercase'), uppercase: document.querySelector('.helper-text .uppercase'), special: document.querySelector('.helper-text .special') }; var pattern = { charLength: function() { if( password.value.length >= 8 ) { return true; } }, lowercase: function() { var regex = /^(?=.*[a-z]).+$/; // Lowercase character pattern if( regex.test(password.value) ) { return true; } }, uppercase: function() { var regex = /^(?=.*[A-Z]).+$/; // Uppercase character pattern if( regex.test(password.value) ) { return true; } }, special: function() { var regex = /^(?=.*[0-9_\W]).+$/; // Special character or number pattern if( regex.test(password.value) ) { return true; } } }; // Listen for keyup action on password field password.addEventListener('keyup', function (){ // Check that password is a minimum of 8 characters patternTest( pattern.charLength(), helperText.charLength ); // Check that password contains a lowercase letter patternTest( pattern.lowercase(), helperText.lowercase ); // Check that password contains an uppercase letter patternTest( pattern.uppercase(), helperText.uppercase ); // Check that password contains a number or special character patternTest( pattern.special(), helperText.special ); // Check that all requirements are fulfilled if( hasClass(helperText.charLength, 'valid') && hasClass(helperText.lowercase, 'valid') && hasClass(helperText.uppercase, 'valid') && hasClass(helperText.special, 'valid') ) { addClass(password.parentElement, 'valid'); } else { removeClass(password.parentElement, 'valid'); } }); function patternTest(pattern, response) { if(pattern) { addClass(response, 'valid'); } else { removeClass(response, 'valid'); } } function addClass(el, className) { if (el.classList) { el.classList.add(className); } else { el.className += ' ' + className; } } function removeClass(el, className) { if (el.classList) el.classList.remove(className); else el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); } function hasClass(el, className) { if (el.classList) { return el.classList.contains(className); } else { new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className); } } })();
That’s all! hopefully, you have successfully integrated this JavaScript strong password validation code into your project. If you have any questions or suggestions, feel free to comment below.