根据身份证号自动显示生日和性别

 // 根据身份证号的倒数第二位判断性别,偶数为女,奇数为男 
getSexFromIdCard = (idCard) => {
    const genderDigit = parseInt(idCard.charAt(idCard.length - 2), 10);
    return genderDigit % 2 === 0 ? 1 : 0;
  };


// 根据身份证号显生日 若身份证号格式错误则显示当天日期
 calculateBirthdayFromIdCard = (idCard) => {
    let birthday = new Date().toISOString().slice(0, 10); // 当天日期
    if(idCard){
      if(idCard.length === 18) {
        const year = idCard.substring(6, 10);
        const month = idCard.substring(10, 12);
        const day = idCard.substring(12, 14);
        // 检查生日是否有效,年月日是否合法
        if (!isNaN(year) && !isNaN(month) && !isNaN(day)) {
          const parsedDate = new Date(`${year}-${month}-${day}`);
          // 如果解析后的日期有效,则设置为生日
          if (!isNaN(parsedDate.getTime())) {
            birthday = `${year}-${month}-${day}`;
          }
        }
      } else if (idCard.length === 15) {
        const year = `19${idCard.substring(6, 8)}`;
        const month = idCard.substring(8, 10);
        const day = idCard.substring(10, 12);
        // 检查生日是否有效,年月日是否合法
        if (!isNaN(year) && !isNaN(month) && !isNaN(day)) {
          const parsedDate = new Date(`${year}-${month}-${day}`);
          // 如果解析后的日期有效,则设置为生日
          if (!isNaN(parsedDate.getTime())) {
            birthday = `${year}-${month}-${day}`;
          }
        }
      }
    }
    return birthday;
  };

//  render()里

 <FormItem {...formItemLayout} label="生日">
                  {getFieldDecorator('birthday', {
                  initialValue: moment(this.calculateBirthdayFromIdCard(userDetail.idCard)) || "",
                  rules: [{
                    required: true,
                    message: '请选择生日',
                  }],
                })(
                  <DatePicker
                    style={{ width: '100%' }}
                    placeholder='请选择生日'
                    showTime
                    format="YYYY-MM-DD"
                  />
                )}
                </FormItem>

 <FormItem {...formItemLayout} label="性别">
            {getFieldDecorator('sex', {
              initialValue: userDetail.idCard ? this.getSexFromIdCard(userDetail.idCard) : undefined,
              rules: [{
                required: true,
                message: '请选择性别',	       
              }]
            })(
              <Select
                style={{width: "100%"}}
                placeholder='请选择性别'
              >
                {USER_SEX_TYPE.map((item) => (
                  <Option key={item.value} value={item.value}>
                    {item.text}
                  </Option>
                ))}
              </Select>
            )}
          </FormItem>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值