在您的代码中,当选中大写复选框时,您只需添加
uppercaseChars
。为了根据输入数字添加大写字符,我更新了大写复选框检查处理程序并生成了保留密码。
这是我更新的代码。
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Password Generator</title>
<link rel="stylesheet" href="StyleSheet1.css" />
</head>
<body>
<div id="password-generator">
<h1>Password Generator</h1>
<label for="length">Password Length</label>
<input type="number" id="length" value="12" min="8" max="30" />
<br />
<label for="uppercase">Include Uppercase</label>
<input type="checkbox" id="uppercase" onclick="enableUClength()" />
<br />
<label for="UClength">Uppercase Length</label>
<input type="number" id="UClength" value="3" min="1" max="10" />
<br />
<label for="numbers">Include Numbers:</label>
<input type="checkbox" id="numbers" checked />
<br />
<label for="symbols">Include Symbols</label>
<input type="checkbox" id="symbols" checked />
<br />
<button onclick="generatePassword()">Generate Password</button>
<br />
<button onclick="copyToClipboard()">Copy to Clipboard</button>
<textarea name="" id="password" rows="3" readonly></textarea>
<div id="success-alert" class="alert alert-success" role="alert" style="display: none;">
Password generated successfully!
</div>
</div>
<script>
function generatePassword() {
const length = document.getElementById('length').value;
const UClength = document.getElementById('UClength').value;
const uppercaseCheckbox = document.getElementById('uppercase');
const numbersCheckbox = document.getElementById('numbers');
const symbolsCheckbox = document.getElementById('symbols');
const uppercaseChars = 'QWERTZUIOPASDFGHJKLYXCVBNM';
const lowercaseChars = 'qwertzuiopasdfghjklyxcvbnm';
const numberChars = '1234567890';
const symbolChars = ';~!@#$%^&*_-+=`|\\(){}[]:;"\'<>,.?/';
let validChars = lowercaseChars;
if (numbersCheckbox.checked) {
validChars += numberChars;
}
if (symbolsCheckbox.checked) {
validChars += symbolChars;
}
let password = '';
let uppercases = '';
// Here, generate uppercase characters based on input number
if (uppercaseCheckbox.checked) {
for (let i = 0; i < UClength; i++) {
uppercases += uppercaseChars.charAt(Math.floor(Math.random() * uppercaseChars.length));
}
}
// Here, generate passwords based on remain length except uppercase characters
let remainingLength = uppercaseCheckbox.checked ? (length - UClength) : length;
for (let i = 0; i < remainingLength; i++) {
const randomIndex = Math.floor(Math.random() * validChars.length);
password += validChars.charAt(randomIndex);
}
password += uppercases;
password = shuffle(password);
document.getElementById('password').value = password;
document.getElementById('success-alert').style.display = 'block';
setTimeout(() => {
document.getElementById('success-alert').style.display = 'none';
}, 3000);
}
function shuffle(string) {
const array = string.split('');
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]]; // Swap
}
return array.join('');
}
</script>
</body>
</html>
希望对您有帮助!