输入身份证号,生日,性别自动填充

使用react的组件库的form表单为输入框。
需要先引入组件,关于日期的moment,首先需要通过以下步骤进行安装:
 

1. 使用 npm 安装

如果你的项目是 Node.js 环境或者使用了 npm/yarn 管理依赖,可以通过以下命令安装:

npm install moment --save


给证件号码的输入框绑定onChange事件为handleIdCardChange。

处理身份证号,先判断是否符合标准,符合标准后去身份证的有效信息。

import {  Button,  Drawer,  Form,  Input,  Modal,  Select} from 'antd';
import React, { useEffect, useState } from 'react';
// 抽屉页面的标签栏
import type { TabsProps } from 'antd';
// 日期
import { DatePicker } from 'antd';
import moment from 'moment'; // 引入 moment.js 库
const { Option } = Select;
// 处理身份证号输入
  const handleIdCardChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    const idCard = e.target.value;
    // 判断身份证号是否符合标准(长度是18位)
    if (idCard.length === 18) {
      // 提取性别(身份证第17位,奇数为男,偶数为女)
      const sex = parseInt(idCard.charAt(16)) % 2 === 0 ? '女' : '男';
      // 提取出生日期(身份证第7-14位是出生日期,格式为YYYYMMDD)
      const birthDate = idCard.substring(6, 14); // YYYYMMDD格式
      const year = birthDate.substring(0, 4);
      const month = birthDate.substring(4, 6);
      const day = birthDate.substring(6, 8);
      const birthday = `${year}-${month}-${day}`;
      // 将字符串格式的生日转换为 moment 对象
      const formattedBirthday = moment(birthday, 'YYYY-MM-DD');
      // 填充性别和生日
      form.setFieldsValue({
        sex: sex,
        birthday: formattedBirthday, // 设置为 moment 对象
      });
    }
  };
<Form.Item
                  label="证件号码"
                  name="idcard"
                  rules={[{ required: true, message: '请输入证件号码' }]}
                  style={{ width: 220 }}
                >
                  <Input
                    placeholder="请输入证件号码"
                    onChange={handleIdCardChange}
                    defaultValue={editData.idcard}
                  />
                </Form.Item>
 <Form.Item
                  label="性别"
                  name="sex"
                  rules={[{ required: true, message: '输入身份证号自动填充' }]}
                  style={{ width: 220 }}
                >
                  <Select placeholder="输入身份证号自动填充" disabled defaultValue={editData.sex}>
                    <Option value="男">男</Option>
                    <Option value="女">女</Option>
                  </Select>
                </Form.Item>
                <Form.Item
                  label="生日"
                  name="birthday"
                  rules={[{ required: true, message: '输入身份证号自动填充' }]}
                  style={{ width: 220 }}
                >
                  <Input
                    type="text"
                    style={{ width: '100%' }}
                    disabled
                    defaultValue={editData.birthday}
                    placeholder="输入身份证号自动填充"
                  />
                </Form.Item>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值