最小大写字符数量 |密码生成器

问题描述 投票:0回答:1
javascript html passwords password-generator
1个回答
0
投票

在您的代码中,当选中大写复选框时,您只需添加

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>

希望对您有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.