vue 身份证格式校验

1、在vue中,经常会在表单中遇到身份证格式校验,首先想到使用表单校验的方式来处理,首先创建身份证输入框

<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="身份证号" prop="idCardNumber">
            <el-input v-model="form.idCardNumber" placeholder="请输入身份证号码" />
        </el-form-item>
	</el-form>
</el-dialog>

2、定义身份证校验方法,在rules中调用。

export default {
	name:'',
	components: {
	},
	data() {
	//身份证校验
	const isCnNewID = (rule, value, callback) => {
           var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子
           var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码
           if (/^\d{17}\d|x$/i.test(value)) {
               var sum = 0, idx;
               for (var i = 0; i < value.length - 1; i++) {
                   // 对前17位数字与权值乘积求和
                   sum += parseInt(value.substr(i, 1), 10) * arrExp[i];
               }
               // 计算模(固定算法)
               idx = sum % 11;
               // 检验第18为是否与校验码相等
               if (arrValid[idx] == value.substr(17, 1).toUpperCase()) {
                   callback()
               } else {
                   callback("身份证格式有误")
               }
           } else {
               callback("身份证格式有误")
           }
    }
	return {
		title:'',
		open:false,
		form:{},
		//表单校验
		rules: {
			idCardNumber: [
				{ required: true, message: "身份证不能为空", trigger: "blur" },
				{	//调用上面定义的方法校验格式是否正确
                   validator: isCnNewID,trigger: "blur"
                }
			]
		}
	}
}
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值