当前位置: 首页 > article >正文

react身份证回显

1. 处理身份证号的函数
function getAgeSexAndBirthdate(idCard: string): { sex: '男' | '女' | null; birthdate: Date | null } {
  if (idCard.length !== 18) {
    console.error('身份证号码必须是18位。');
    return { sex: null, birthdate: null };
  }
  // 提取出生年月日
  const year = parseInt(idCard.substring(6, 10));
  const month = parseInt(idCard.substring(10, 12));
  const day = parseInt(idCard.substring(12, 14));
  const birthDate = new Date(year, month - 1, day); // 注意月份是从0开始的
  // 判断性别
  const sex = parseInt(idCard.charAt(16)) % 2 === 0 ? '女' : '男';
  return { sex, birthdate: birthDate };
}

思路:

  • 根据身份证号的第7到14位提取出生日期。
  • 根据身份证号的第17位判断性别。
2. 监听身份证号变化的函数
function handleIdCardChange(e) {
  const newIdCard = e.target.value;
  const { sex: newSex, birthdate: newBirthdate } = getAgeSexAndBirthdate(newIdCard);
  if (newBirthdate != null) {
    const dateStart = newBirthdate;
    const birthdayHappy = `${dateStart.getFullYear()}-${String(dateStart.getMonth() + 1).padStart(2, '0')}-${String(dateStart.getDate()).padStart(2, '0')}`;
    setFormattedDateStart(birthdayHappy); // 生日输入框赋值
    console.log(newSex, formattedDateStart);
    setSex(newSex || '');
    setBirthdate(formattedDateStart || '');
  }
}

思路:

  • 当身份证号输入框发生变化时触发此函数。
  • 调用getAgeSexAndBirthdate函数计算出性别和出生日期。
  • 将计算结果更新到对应的state中,并设置到表单项中。
3. 在表单中绑定身份证号输入框
<Form.Item name="idcard">
  <input
    type="text"
    defaultValue={form.getFieldValue('idcard')}
    onChange={handleIdCardChange} // 绑定身份证号变化事件
    required
    disabled
    style={{
      width: '100%',
      fontSize: '14px',
      borderRadius: '5px',
      border: '1px solid #ccc'
    }}
  />
</Form.Item>

思路:

  • 在身份证号输入框上绑定onChange事件,当输入框内容改变时会触发handleIdCardChange函数。
4. 设置性别和生日到表单项
form.setFieldsValue({
  ...
  sex: sex, // 性别
  birthday: moment(birthdate), // 生日
  ...
});

思路:

  • 在展示详情时,根据身份证号计算出的性别和生日设置到表单项中,以便回显。

这些代码片段共同实现了从身份证号自动解析出性别和出生日期,并将其回显到表单中的功能。


http://www.kler.cn/a/443366.html

相关文章:

  • 计算机网络例题
  • openai swarm agent框架源码详解及应用案例实战
  • C语言初阶习题【25】strcpy的模拟实现
  • React Router底层核心原理详解
  • STM32-笔记37-吸烟室管控系统项目
  • 【Arm】Arm 处理器的半主机(semihosting)机制
  • 前端:如何在静态目录下显示一张图片
  • OpenCV(python)从入门到精通——运算操作
  • C++ 只出现一次的数字 - 力扣(LeetCode)
  • Golang的向前兼容性和toolchain规则,Go1.21.0
  • SpringBoot3整合FastJSON2如何配置configureMessageConverters
  • RabbitMQ的工作模型
  • DataOps驱动数据集成创新:Apache DolphinScheduler SeaTunnel on Amazon Web Services
  • Spring Boot 中异常日志记录的最佳实践:实时示例
  • .NET Runtime 是什么?
  • DNS协议 是什么?说说DNS 完整的查询过程?
  • 矩阵在资产收益(Asset Returns)中的应用:以资产回报矩阵为例(中英双语)
  • 使用 Django 和 AWS 实现自动同步 ECR 信息
  • 《算法ZUC》题目
  • C++算法第十一天
  • Scala快速入门+示例
  • html <a>设置发送邮件链接、打电话链接 <a href=“mailto:></a> <a href=“tel:></a>
  • 网页核心页面设计(第10章)
  • C语言:排序
  • uniapp v-tabs修改了几项功能,根据自己需求自己改
  • Java原生实现代码沙箱的实现