Password validation
How do I make an password validation?
What is a password validation? How do you make a password validation? This script and codes were developed by Dave on 25 November 2022, Friday.
Password validation - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>Password validation</title> <link rel="stylesheet" href="css/style.css">
</head>
<body> <label for="id_password">Password</label>
<input id="id_password" type="password" name="password" value="" class="js-password" data-error-list-id="id_password_errors" data-confirm-id="id_confirm_password">
<div id="id_password_errors" class="error-message"> <h3>Password must have at least:</h3> <ul> <li class="js-password-length is-hidden">8 Characters</li> <li class="js-password-upper is-hidden">1 uppercase character</li> <li class="js-password-lower is-hidden">1 lowercase character</li> <li class="js-password-number is-hidden">1 number</li> </ul>
</div>
<!-- <div class="tooltip"> <h3>Password must have at least:</h3> <ul> <li>8 Characters</li> <li>1 uppercase character</li> <li>1 lowercase character</li> <li>1 number</li> </ul>
</div> -->
<div> <label for="id_confirm_password">Confirm password</label> <input id="id_confirm_password" type="password" name="password" value="" class="js-match-input-values" data-match-id="id_password"> <p class="error-message">Passwords do not match</p>
</div> <script src="js/index.js"></script>
</body>
</html>
Password validation - Script Codes CSS Codes
.is-invalid { border: solid 1px #c00;
}
.error-message { color: #c00; display: none;
}
.is-hidden { display: none;
}
.is-invalid + .error-message { display: block;
}
Password validation - Script Codes JS Codes
'use strict';
// Checks
var isLongEnough = function isLongEnough(val) { var min = arguments.length <= 1 || arguments[1] === undefined ? 8 : arguments[1]; return val.length >= min;
};
var hasUpperCaseChar = function hasUpperCaseChar(val) { return (/[A-Z]/.test(val) );
};
var hasLowerCaseChar = function hasLowerCaseChar(val) { return (/[a-z]/.test(val) );
};
var hasNumber = function hasNumber(val) { return (/\d/.test(val) );
};
var stringsMatch = function stringsMatch(str1, str2) { return str1.toUpperCase() === str2.toUpperCase();
};
// Error messages
var showMessage = function showMessage(id, className) { return document.querySelector('#' + id + ' .' + className).classList.remove('is-hidden');
};
var resetErrorMessages = function resetErrorMessages(id) { // Make sure all error messages are hidden (reset) var errorMessages = document.querySelectorAll('#' + id + ' li'); for (var i = 0; i < errorMessages.length; i++) { errorMessages[i].classList.add('is-hidden'); }
};
// Main validation function
var validatePassword = function validatePassword() { var isDirty = false; return function (e) { var val = e.target.value; var errorId = e.target.dataset.errorListId; var confirmId = e.target.dataset.confirmId; resetErrorMessages(errorId); var hasErrors = false; if (!isLongEnough(val)) { showMessage(errorId, 'js-password-length'); hasErrors = true; } if (!hasUpperCaseChar(val)) { showMessage(errorId, 'js-password-upper'); hasErrors = true; } if (!hasLowerCaseChar(val)) { showMessage(errorId, 'js-password-lower'); hasErrors = true; } if (!hasNumber(val)) { showMessage(errorId, 'js-password-number'); hasErrors = true; } if (confirmId) { var confirmInput = document.getElementById(confirmId); if (confirmInput.value && confirmInput.value !== val) { confirmInput.classList.add('is-invalid'); } else { confirmInput.classList.remove('is-invalid'); } } if (hasErrors) { e.target.classList.add('is-invalid'); } };
};
var clearInvalidState = function clearInvalidState(e) { e.target.classList.remove('is-invalid');
};
var matchPasswords = function matchPasswords(e) { var password = document.getElementById(e.target.dataset.matchId).value; if (!stringsMatch(e.target.value, password)) { e.target.classList.add('is-invalid'); };
};
var bindEvents = function bindEvents() { var passwords = document.getElementsByClassName('js-password'); var confirmPasswords = document.getElementsByClassName('js-match-input-values'); for (var i = 0; i < passwords.length; i++) { passwords[i].addEventListener('blur', validatePassword()); passwords[i].addEventListener('focus', clearInvalidState); } for (var i = 0; i < confirmPasswords.length; i++) { confirmPasswords[i].addEventListener('blur', matchPasswords); confirmPasswords[i].addEventListener('focus', clearInvalidState); }
};
bindEvents();
Developer | Dave |
Username | DaveOrDead |
Uploaded | November 25, 2022 |
Rating | 3 |
Size | 3,866 Kb |
Views | 14,168 |
Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!
Name | Size |
Email validation | 3,528 Kb |
Flexbox Grid - equal height | 2,855 Kb |
Callbacks | 1,471 Kb |
Colour Swatches | 3,409 Kb |
React Calculator | 30,708 Kb |
A Pen by Dave | 1,728 Kb |
Shell CSS lib | 43,289 Kb |
Words at War | 32,346 Kb |
Inline-block grid | 3,996 Kb |
Flexbox grid mark 2 | 2,131 Kb |
Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!
Name | Username | Size |
CSS Hover Effects | Alen | 3,613 Kb |
Draggable directive | YahyaKacem | 2,277 Kb |
Knockout Lists | Marinru | 2,531 Kb |
CSS Gem Badge | Orchard | 3,335 Kb |
Animating characters with jQuery | 042 | 2,776 Kb |
Free css icon set v2 - one div | Ben_jammin | 0 Kb |
Search field | Jamesbarnett | 2,100 Kb |
Product item | Mymahesh11 | 2,256 Kb |
Super Discount | Orrinward | 3,225 Kb |
Lunar eclipse | Ademilter | 2,056 Kb |
Surf anonymously, prevent hackers from acquiring your IP address, send anonymous email, and encrypt your Internet connection. High speed, ultra secure, and easy to use. Instant setup. Hide Your IP Now!