elementUI失去焦點校驗身份證
<el-form-item label="證件號碼:">
<el-input
v-model="form.cardNum"
@blur="cardBlur()"
placeholder="請輸入證件號碼"
maxlength="18"
></el-input>
</el-form-item>
//身份證失去焦點校驗
cardBlur() {
var vm = this;
if (vm.form.cardNum !== "") {
var validateStr = vm.isIdCard(vm.form.cardNum);
if (validateStr == false) {
//alert("請輸入正確的身份證號碼!");
vm.open3();
} else {
//身份證正確
}
}
},
//身份證錯誤提示
open3() {
this.$message({
showClose: true,
message: "請輸入正確的身份證號碼!",
type: "error"
});
},
//判斷是不是合法身份證號
isIdCard: function(data) {
var str = data;
if (str == "") return false;
var len = str.length;
var reg = "";
if (len == 15) {
reg = /^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/;
} else if (len == 18) {
reg = /^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d|X|x)$/;
} else {
return false;
}
if (!reg.test(str)) return false;
var part = str.match(reg);
var year = len == 15 ? "19" + part[3] : part[3];
var date = new Date(year + "/" + part[4] + "/" + part[5]);
if (
date.getFullYear() != year ||
date.getMonth() + 1 != (part[4] | 0) ||
date.getDate() != (part[5] | 0)
)
return false;
if (len == 15) return true;
var wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var lastcode = "10X98765432";
var sum = 0;
for (var i = 0; i < 17; i++) {
sum += parseInt(str.charAt(i)) * wi[i];
}
return lastcode.charAt(sum % 11) == part[7].toUpperCase();
},