【避坑指“难”】js通过输入身份证号,自动填充出生年月和性别信息

在这里插入图片描述

<Form
        form={
    
    form}
        name="validate_other"
        onFinish={
    
    onFinish}
        style={
    
    {
    
     position: 'relative' }}
        initialValues={
    
    {
    
    
          applyType: 1,
        }}
      >
        <Form.Item name="applyName" label="代理人" rules={
    
    FormValidator.notEmpty('代理人')}>
          <Input placeholder="请输入代理人姓名" />
        </Form.Item>
        <Form.Item name="idNumber" label="身份证号" rules={
    
    FormValidator.idCard('身份证号')}>
          <Input placeholder="请输入身份证号" onChange={
    
    changeIdCard} id="idCard" />
        </Form.Item>
        <Form.Item name="birthday" label="出生日期" rules={
    
    FormValidator.notEmpty('出生日期')}>
          <DatePicker />
        </Form.Item>
        <Form.Item name="sex" label="性别" rules={
    
    FormValidator.notEmpty('性别')}>
          <Radio.Group>
            <Radio value={
    
    1}></Radio>
            <Radio value={
    
    2}></Radio>
          </Radio.Group>
        </Form.Item>
<Form/>

提取身份证信息

  const changeIdCard = (e: any) => {
    
    
    let value = e.target.value;
    const rule = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
    if (rule.test(value)) {
    
    
      let sex = getBirthdayFromIdCard(value, 2);
      let birthday = getBirthdayFromIdCard(value, 1);
      form.setFieldsValue({
    
     'sex': sex === '男' ? 1 : 2 });
      form.setFieldsValue({
    
     'birthday': moment(birthday, dateFormat) });
    }
  };

封装getBirthdayFromIdCard,根据身份证号提取生日、性别信息

export const getBirthdayFromIdCard = (idCard:string, type:number) => {
    
    
  let birthday = "";
  let sex = "";
  let birth = "";
  if (idCard != null && idCard != "") {
    
    
    if (idCard.length == 15) {
    
    
      birthday = "19" + idCard.substr(6, 6);
      sex = parseInt(idCard.substring(14, 1), 10) % 2 ? "男" : "女";
      birth = idCard.substring(3, 7);
    } else if (idCard.length == 18) {
    
    
      birthday = idCard.substr(6, 8);
      sex = parseInt(idCard.substring(17, 1), 10) % 2 ? "男" : "女";
      birth = idCard.substring(6, 10);
    }
    birthday = birthday.replace(/(.{4})(.{2})/, "$1-$2-");
  }

  if (type === 1)
    return birthday;
  if (type === 2)
    return sex;
  if (type === 3) {
    
    
    let myDate = new Date();
    myDate.getFullYear();
    return parseInt(myDate.getFullYear()) - parseInt(birth);
  }
}

猜你喜欢

转载自blog.csdn.net/weixin_42224055/article/details/119925723