<el-input
v-model="ruleForm.card"
// 使用正则表达式,只能输入阿拉伯数字0-9,和字母X(大写)
onkeyup="this.value=this.value.replace(/[^\X0-9]/g, '')"
@on-blur="getName(ruleForm.card)">
</el-input>
data() {
var checkIdentitytionId = (rule, value, callback) => {
if (!value) {
return callback(new Error("身份证号不能为空"));
}
if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(value)) {
callback(new Error("你输入的身份证长度或格式错误"));
}
//身份证城市
var aCity = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "内蒙古",
21: "辽宁",
22: "吉林",
23: "黑龙江",
31: "上海",
32: "江苏",
33: "浙江",
34: "安徽",
35: "福建",
36: "江西",
37: "山东",
41: "河南",
42: "湖北",
43: "湖南",
44: "广东",
45: "广西",
46: "海南",
50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门",
91: "国外"
};
if (!aCity[parseInt(value.substr(0, 2))]) {
callback(new Error("你的身份证地区非法"));
}
// 出生日期验证
var sBirthday = (
value.substr(6, 4) +
"-" +
Number(value.substr(10, 2)) +
"-" +
Number(value.substr(12, 2))
).replace(/-/g, "/"),
d = new Date(sBirthday);
if (
sBirthday !=
d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate()
) {
callback(new Error("身份证上的出生日期非法"));
}
// 身份证号码校验
var sum = 0,
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],
codes = "10X98765432";
for (var i = 0; i < value.length - 1; i++) {
sum += value[i] * weights[i];
}
var last = codes[sum % 11]; //计算出来的最后一位身份证号码
if (value[value.length - 1] != last) {
callback(new Error("你输入的身份证号非法"));
}
callback();
};
rules: {
card: [ { validator: checkIdentitytionId, trigger: 'blur' } ],
}
methods: {
//获取身份证号码输入内容
getName(iden){
let val = iden.length;
let sex = null;
let myDate = new Date();
let month = myDate.getMonth() + 1;
let day = myDate.getDate();
let age = 0;
if(val===18){
age = myDate.getFullYear() - iden.substring(6, 10) - 1;
sex = iden.substring(16,17);
if (iden.substring(10, 12) < month || iden.substring(10, 12) == month && iden.substring(12, 14) <= day) age++;
}
if(val===15){
age = myDate.getFullYear() - iden.substring(6, 8) - 1901;
sex = iden.substring(13,14);
if (iden.substring(8, 10) < month || iden.substring(8, 10) == month && iden.substring(10, 12) <= day) age++;
}
if(sex%2 === 0)
sex = 1
else
sex = 0
this.nannv = sex;
this.nianling = age;
console.log(this.nannv)
console.log(this.nianling)
if(this.nannv=="0"){
this.ruleForm.sex ='男'
}else{
this.ruleForm.sex ='女'
}
this.ruleForm.age = this.nianling
},
}
经过多次验证,上方代码 只要完全复制 没有任何问题 v-model 自行定义
@on-blur 传参 是v-model 的值