vue表单验证填写判断身份证自动写入年龄性别和出生年月日

判断身份证
我用的是表单验证
在你验证的下方写入就跟我这样差不多这是一个正则表达式

 const rules = reactive<FormRules>({
    name: [{ required: true, message: '请输入名字', trigger: 'blur' }],
    id_card: [
      {
        required: true,
        message: '请输入身份证号码',
        trigger: 'change',
      },
      { pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, message: '你的身份证格式不正确' },
    ],
  tele: [
      {
        required: true,
        message: '请输入手机号',
        trigger: 'change',
      },
      {
        pattern:
          /^(((13[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(17[3-8]{1})|(18[0-9]{1})|(19[0-9]{1})|(14[5-7]{1}))+\d{8})$/,
        message: '你的手机格式不对',
      },
    ],

而写入身份证自动写入年龄性别和出生年月日

这就需要  watch

watch(ruleForm, (newName, oldName) => {
    var numid = newName.id_card.split('');
    if (numid.length == 18) {
      var sex = newName.id_card.substring(16, 17);
      ruleForm.sex = sex % 2 == 1 ? '男' : '女';
      var bir = newName.id_card.substr(6, 8);
      ruleForm.born = bir.replace(/(.{4})(.{2})/, '$1-$2-');
      let myDate = new Date();
      ruleForm.age = myDate.getFullYear() - newName.id_card.substring(6, 10);
    } else {
      ruleForm.sex = '';
      ruleForm.born = '';
      ruleForm.age = '';
    }
  });

这就可以了效果如下

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值