You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS开发密码生成器如何用loop实现未选密码规则时弹出alert提示

实现方案

核心逻辑是用do...while循环包裹规则选择流程,校验用户是否至少选中一项生成规则,未选中则弹出提示后重新进入选择流程,同时可补充密码长度合法性校验避免非法输入影响后续逻辑。

修改后代码如下:

// 函数功能:点击生成按钮后,弹出提示供用户选择密码生成规则
var generateBtnPrompt = function () {
    var confirmNumber, confirmLowerCase, confirmUpperCase, confirmSymbols;
    // 规则选择循环:至少选中一项规则才会退出
    do {
        confirmNumber = confirm("点击「确定」在密码中包含数字");
        confirmLowerCase = confirm("点击「确定」在密码中包含小写字母");
        confirmUpperCase = confirm("点击「确定」在密码中包含大写字母");
        confirmSymbols = confirm("点击「确定」在密码中包含特殊符号");
        // 校验是否一项都没选
        if (!confirmNumber && !confirmLowerCase && !confirmUpperCase && !confirmSymbols) {
            alert("请至少选择一项密码生成规则");
        }
    } while (!confirmNumber && !confirmLowerCase && !confirmUpperCase && !confirmSymbols)

    var charLength;
    // 密码长度校验循环:输入合法才会退出
    do {
        charLength = parseInt(prompt("你想要生成多少位的密码?请输入8-128之间的数字"));
        if (isNaN(charLength) || charLength < 8 || charLength > 128) {
            alert("输入不合法,请输入8到128之间的有效数字");
        }
    } while (isNaN(charLength) || charLength < 8 || charLength > 128)

    // 后续密码生成逻辑可以在此处编写
    console.log("选中规则:", {confirmNumber, confirmLowerCase, confirmUpperCase, confirmSymbols, charLength});
};

关键逻辑说明:

  • do...while循环会先执行一次内部的规则选择逻辑,再判断是否满足循环条件,刚好匹配「先让用户选择,选择不符合要求就重新选择」的需求
  • 四个confirm返回值全为false的场景下会触发alert提示,重新进入规则选择流程
  • 补充的长度校验逻辑可以避免用户输入非数字、超出范围的数值导致后续生成逻辑出错

内容的提问来源于stack exchange,提问作者dev1001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:18:04