-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
74 lines (56 loc) · 2.36 KB
/
script.js
File metadata and controls
74 lines (56 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
const CharacterAmountRange = document.getElementById("CharacterAmountRange");
const CharacterAmountNumber = document.getElementById("CharacterAmountNumber");
const includeUppercaseElement = document.getElementById("includeUppercase");
const includeNumbersElement = document.getElementById("includeNumbers");
const includeSymbolsElement = document.getElementById("includeSymbols");
const form = document.getElementById("PasswordGeneratorForm");
const passwordDisplay = document.getElementById("passwordDisplay");
const UPPERCASE_CHAR_CODES = arrayFromLowToHigh(65, 90);
const LOWERCASE_CHAR_CODES = arrayFromLowToHigh(97, 122);
const NUMBER_CHAR_CODES = arrayFromLowToHigh(48, 57);
const SYMBOL_CHAR_CODES = arrayFromLowToHigh(33, 47)
.concat(arrayFromLowToHigh(58, 64))
.concat(arrayFromLowToHigh(91, 96))
.concat(arrayFromLowToHigh(123, 126));
CharacterAmountNumber.addEventListener("input", syncCharacterAmount);
CharacterAmountRange.addEventListener("input", syncCharacterAmount);
form.addEventListener("submit", (e) => {
e.preventDefault();
const characterAmount = CharacterAmountNumber.value;
const includeUppercase = includeUppercaseElement.checked;
const includeNumbers = includeNumbersElement.checked;
const includeSymbols = includeSymbolsElement.checked;
const password = generatePassword(characterAmount, includeUppercase, includeNumbers, includeSymbols);
console.log(passwordDisplay);
passwordDisplay.innerText = password;
});
function generatePassword(
syncCharacterAmount,
includeUppercase,
includeNumbers,
includeSymbols)
{
let charCodes = LOWERCASE_CHAR_CODES;
if (includeUppercase) charCodes = charCodes.concat(UPPERCASE_CHAR_CODES);
if (includeSymbols) charCodes = charCodes.concat(SYMBOL_CHAR_CODES);
if (includeNumbers) charCodes = charCodes.concat(NUMBER_CHAR_CODES);
const passwordCharacters = [];
for (let i = 0; i < syncCharacterAmount; i++) {
const characterCode =
charCodes[Math.floor(Math.random() * charCodes.length)];
passwordCharacters.push(String.fromCharCode(characterCode));
}
return passwordCharacters.join("");
}
function arrayFromLowToHigh(low, high) {
const array = [];
for (let i = low; i <= high; i++) {
array.push(i);
}
return array;
}
function syncCharacterAmount(e) {
const value = e.target.value;
CharacterAmountNumber.value = value;
CharacterAmountRange.value = value;
}