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
相关产品推荐
相关产品推荐

