1.- Обрабатывать длину пароля (диапазон от 8 до 13)
Я бы предложил, чтобы для максимальной длины вы использовали собственный атрибут для входных данных maxlength
:
<input maxlength="13">
И обновите свою функцию, чтобы ничего не показывать о надежности пароля, пока длина не станет больше, чем 8:
if (password.length < 8) {
document.getElementById("msg").innerHTML = "";
return;
}
2 и 3 работает правильно, хорошо сделано.
4.- Пароль не должен содержать имя пользователя
Понимая, что вы сохранили имя пользователя в другом месте, доступном для области, вы можете просто добавить другое, если ниже, где вы оцениваете длину пароля, выполняя возврат, если пароль содержит имя пользователя:
if (password.includes(username)) {
document.getElementById("msg").innerHTML = "La contraseña no debe contener el nombre de usuario.";
return;
}
Сообщение до вас, только что поместили что-то демонстративное.
5.- Нет, это ДОЛЖНО обрабатываться на стороне сервера.
И, наконец, посмотрите на окончательный код:
const username = "k3llydev";
function validatePassword(password) {
// Do not show anything when the length of password is zero.
if (password.length < 8) {
document.getElementById("msg").innerHTML = "";
return;
}
if (password.includes(username)) {
document.getElementById("msg").innerHTML = "La contraseña no debe contener el nombre de usuario.";
return;
}
// Create an array and push all possible values that you want in password
var matchedCase = new Array();
matchedCase.push("[$@$!%*#?&]"); // Special Charector
matchedCase.push("[A-Z]"); // Uppercase Alpabates
matchedCase.push("[0-9]"); // Numbers
matchedCase.push("[a-z]"); // Lowercase Alphabates
// Check the conditions
var ctr = 0;
for (var i = 0; i < matchedCase.length; i++) {
if (new RegExp(matchedCase[i]).test(password)) {
ctr++;
}
}
// Display it
var color = "";
var strength = "";
switch (ctr) {
case 0:
case 1:
case 2:
strength = "Contraseña Débil";
color = "red";
break;
case 3:
strength = "Contraseña Regular";
color = "orange";
break;
case 4:
strength = "Contraseña Fuerte";
color = "green";
break;
}
document.getElementById("msg").innerHTML = strength;
document.getElementById("msg").style.color = color;
}
<input onkeyup="validatePassword(this.value)" maxlength="13">
<span id="msg"></span>