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

如何阻止用户使用本地存储中已存在的用户名?

搞定这个需求很简单,核心就是在用户提交注册信息前,先去localStorage里查一下有没有重复的用户名。结合你给出的代码片段,我给你整理了具体的实现方案:

1. 核心思路
  • 每次用户提交注册时,先从localStorage读取已存储的用户列表
  • 对比当前输入的用户名是否存在于列表中
  • 若存在则提示用户并阻止提交;若不存在则将新用户信息存入localStorage
2. 修改后的完整代码片段

首先我们需要完善你的subm()函数,加入用户名重复检查逻辑:

var labelsarray = document.getElementsByTagName("label");
var inputsarray = document.getElementsByTagName("input");
var array = [];

function agecal() {
  var Bdate = inputsarray[4].value;
  var Bday = +new Date(Bdate).getFullYear();
  var age = (new Date().getFullYear() - Bday);
  inputsarray[5].value = age;
}

function subm(event) {
  // 1. 获取并清理当前输入的用户名(去掉前后空格)
  const currentUsername = inputsarray[2].value.trim();
  
  // 先检查用户名是否为空
  if (!currentUsername) {
    alert("请输入用户名!");
    event?.preventDefault(); // 阻止表单默认提交(如果绑定了表单提交事件)
    return;
  }

  // 2. 从localStorage读取已注册用户列表,首次无数据则默认空数组
  let registeredUsers = JSON.parse(localStorage.getItem('registeredUsers')) || [];

  // 3. 检查用户名是否已存在(默认大小写敏感,可根据需求调整)
  const usernameExists = registeredUsers.some(user => user.UserName === currentUsername);

  if (usernameExists) {
    alert("这个用户名已经被使用了,请更换一个!");
    event?.preventDefault(); // 阻止表单提交
    return;
  }

  // 4. 用户名可用,创建新用户对象
  const newUser = {
    FirstName: inputsarray[0].value,
    LastName: inputsarray[1].value,
    UserName: currentUsername,
    Password: inputsarray[3].value,
    DateofBirth: inputsarray[4].value,
    Age: inputsarray[5].value
  };

  // 5. 将新用户添加到列表并存回localStorage
  registeredUsers.push(newUser);
  localStorage.setItem('registeredUsers', JSON.stringify(registeredUsers));

  // 注册成功提示(可根据需求替换为跳转等逻辑)
  alert("注册成功!");
}
3. 额外注意事项
  • 大小写不敏感检查:如果你希望用户名不区分大小写(比如"John"和"john"视为同一个),可以把检查逻辑改成:
    const usernameExists = registeredUsers.some(user => 
      user.UserName.toLowerCase() === currentUsername.toLowerCase()
    );
    
  • 表单提交绑定:如果你的subm()是绑定在表单的onsubmit事件上,记得要传递event参数,比如:
    <form onsubmit="subm(event)">
      <!-- 你的表单输入项 -->
      <button type="submit">提交</button>
    </form>
    
  • 安全性提示:localStorage存储在用户本地,数据可以被手动修改,所以正式环境下必须在后端也做一次用户名重复验证,前端检查只是提升用户体验,不能作为唯一的安全屏障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:40:08