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

关于确认密码校验与仅字母输入校验的代码正确性及运行异常求助

代码问题汇总

validation 函数问题

  • 逻辑冲突:函数定义时声明了password、confirmpassword两个入参,但函数内部又从表单重新取值覆盖了入参,传参逻辑完全失效
  • 取值错误:内部已经把password、confirmpassword赋值为表单输入的字符串值,后续判断又错误调用了.value属性,字符串不存在该属性,对比永远不成立
  • 分支错误:密码不一致的判断未包裹花括号,导致return false语句无论判断结果如何都会执行,只要走到该逻辑段永远返回false
  • 笔误:原提示语中"more thank"为拼写错误,应为"more than"

allLetter 函数问题

  • 无返回值:校验不通过时没有返回false,绑定在表单事件上时无法拦截提交操作
  • 正则漏洞:当前正则/^[a-z]*$/i允许空字符串通过,若为必填字段会出现校验失效问题

修正后代码

// 密码一致性&长度校验
function validation() {
    // 若实际场景是通过参数传入密码值,可删除下面两行取值逻辑,直接使用入参
    const password = document.form.password.value;
    const confirmpassword = document.form.confirmpassword.value;

    if (password.length <= 6) {
        alert("密码长度需大于6位");
        return false;
    }
    if (password !== confirmpassword) {
        alert("两次输入的密码不一致");
        return false;
    }
    return true;
}

// 仅允许字母输入校验
function allLetter(inputtxt) {
    // 正则改为+,确保至少输入1位字母
    const letters = /^[a-z]+$/i;
    if (!inputtxt.value.match(letters)) {
        alert("请仅输入字母");
        return false;
    }
    return true;
}

使用注意

如果绑定到表单提交事件,需要按onsubmit="return validation()"格式书写,否则返回的false不会拦截表单提交。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 02:06:02