欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

根据身份证号码自动生成性别、出生日期和年龄

最编程 2024-05-05 07:47:23
...

在身份证输入框绑定@input事件(在 Input 值改变时触发),代码如下:

<el-form-item label="身份证号" prop="identityCardNo">
    <el-input v-model.trim="dataList.identityCardNo" autocomplete="off" placeholder="请输入身份证号" maxlength="18" @input="inputChange"></el-input>
</el-form-item>
复制代码

js代码如下:

//根据身份证号自动生成性别、出生日期和年龄
    inputChange() {
      const reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
      if (reg.test(this.dataList.identityCardNo)) { // 身份证号码是否合法
        var org_birthday = this.dataList.identityCardNo.substring(6, 14);
        var org_gender = this.dataList.identityCardNo.substring(16, 17);
        var sex = org_gender % 2 == 1 ? "男" : "女";      
        var birthday = org_birthday.substring(0, 4) + "-" + org_birthday.substring(4, 6) + "-" + org_birthday.substring(6, 8);
        var birthdays = new Date(birthday.replace(/-/g, "/"));
        let d = new Date();
        let age = d.getFullYear() - birthdays.getFullYear() - (d.getMonth() < birthdays.getMonth() || (d.getMonth() == birthdays.getMonth() && d.getDate() < birthdays.getDate()) ? 1 : 0);
        
        // console.log('生日转换时间', birthdays)
        // console.log('年龄', age)

        // 赋值给表格
        this.dataList.sex = sex
        this.dataList.birthday = birthday
        this.dataList.age = age
      } else {
        this.dataList.sex = "未填写"
        return false
      }
    },
复制代码

效果图如下: