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

如何在React中校验输入框邮箱是否存在于给定列表并展示错误提示

React 邮箱重复校验实现方案

你可以直接基于现有代码做三处修改即可完成需求:

1. 补全校验函数

在组件内新增如下validate校验函数,逻辑是从表格渲染的数据源filterData中提取所有已存在的邮箱,和当前输入的邮箱做大小写不敏感的比对,同时也支持额外加邮箱格式校验:

const validate = () => {
  // 空输入不报错,如需必填校验可自行修改此处逻辑
  if (!email.trim()) return '';
  // 提取所有已存在的邮箱,统一转小写避免大小写匹配问题
  const existedEmails = filterData.map(item => item.email.toLowerCase());
  if (existedEmails.includes(email.toLowerCase())) {
    return '该邮箱已存在,请更换后重试';
  }
  // 可选:增加邮箱格式校验
  const emailRule = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  if (!emailRule.test(email)) {
    return '请输入正确的邮箱格式';
  }
  return '';
};

2. 优化输入框和按钮的交互

修改表单内的输入框和邀请按钮代码,增加错误态样式和禁用逻辑,提升使用体验:

<Form.Input 
  placeholder='请输入邮箱'  
  value={email} 
  onChange={(e,data) => setEmail(data.value)} 
  width={8}
  // 校验不通过时输入框自动标红
  error={!!validate()}
/>
<span style={{padding:'10px',paddingRight:'49px'}} ></span>
<div style={{color:'red'}}>{validate()}</div>

<Form.Select fluid value={role} onChange={(e,data) => setRole(data.value)} options={options} placeholder='选择角色' content="请选择角色"  width={4}/>
<span style={{padding:'10px',paddingRight:'50px'}} ></span>
<Form.Field  
  primary 
  onClick={sendUserInvite} 
  style={{borderRadius:'20px' ,padding:'10px', width:'110px'}} 
  control={Button}
  // 邮箱未填、校验不通过、未选角色时禁用邀请按钮
  disabled={!email.trim() || !!validate() || !role}
>
  邀请
</Form.Field>

3. 邀请逻辑前置校验

修改sendUserInvite函数,点击邀请时再做一次兜底校验,避免异常情况跳过前端校验:

const sendUserInvite = () => {
  // 前置校验,有错误直接终止后续逻辑
  const errorMsg = validate();
  if (errorMsg) return;

  // 原有邀请逻辑保持不变
  // ...
}

修改完成后,输入邮箱时会实时和表格内的已有邮箱比对,存在重复时输入框旁立即显示红色错误提示,同时邀请按钮会被禁用,无法提交重复邮箱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:36:03