58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
function generatePassword() {
|
|
let length = document.querySelector('[name=length]').value;
|
|
let includeNumbers = document.querySelector('[name=numbers]').checked;
|
|
let includeLowerCase = document.querySelector('[name=lowercase]').checked;
|
|
let includeUpperCase = document.querySelector('[name=uppercase]').checked;
|
|
let includeSpecialChars = document.querySelector('[name=specialChars]').checked;
|
|
|
|
let result = '';
|
|
let chars = '';
|
|
|
|
if (includeNumbers) {
|
|
chars += '0123456789';
|
|
}
|
|
if (includeLowerCase) {
|
|
chars += 'abcdefghijklmnopqrstuvwxyz';
|
|
}
|
|
if (includeUpperCase) {
|
|
chars += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
}
|
|
if (includeSpecialChars) {
|
|
chars += '!@#$%^&*()_+~`|}{[]:;?><,./-=';
|
|
}
|
|
|
|
if (chars.length === 0) {
|
|
alert('Please select at least one type of character to include.');
|
|
return;
|
|
}
|
|
|
|
result += '\n';
|
|
for (let i = 0; i < length; i++) {
|
|
result += chars.charAt(Math.floor(Math.random() * chars.length));
|
|
}
|
|
document.getElementById('password-container').style.display = 'block';
|
|
document.getElementById('password').textContent = result;
|
|
}
|
|
|
|
function copyToClipboard() {
|
|
let password = document.getElementById('password').textContent.trim();
|
|
let input = document.createElement('textarea');
|
|
input.style.position = 'fixed';
|
|
input.style.opacity = 0;
|
|
input.value = password.match(/[^\r\n]+\r?\n?\r?/gm).pop().trim();
|
|
document.body.appendChild(input);
|
|
input.select();
|
|
document.execCommand('copy');
|
|
document.body.removeChild(input);
|
|
|
|
clearCheckmarks();
|
|
alert('Password copied to clipboard!');
|
|
}
|
|
|
|
function clearCheckmarks() {
|
|
let password = document.getElementById('password');
|
|
let text = password.textContent.trim().split('\n');
|
|
text.pop();
|
|
password.textContent = text.join('\n');
|
|
}
|