vue文件
import { idCardInput } from '../../helper/fieldInput';
<mt-field
ref="idcard"
label="身份证号"
placeholder="请输入身份证号"
v-model="idCardInput.idCard"
:validate="idCardInput.validate"
:format="idCardInput.format"
:attr="{maxlength: 24}"
>
</mt-field>
validate.js
function veriIdentity(arrIdCard) {
if (arrIdCard.length == 0) {
return false;
}
if (arrIdCard.length == 15) {
arrIdCard = idCard15To18(arrIdCard);
}
var sigma = 0;
var a = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var w = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var w2 = new Array('1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2');
for (var i = 0; i < 17; i++) {
var ai = parseInt(arrIdCard.substring(i, i + 1));
var wi = a[i];
sigma += ai * wi;
}
var number = sigma % 11;
var check_number = w[number];
var check_number2 = w2[number];
if (arrIdCard.substring(17) == check_number || arrIdCard.substring(17) == check_number2) {
return true;
}
return false;
}
function idCard15To18(id) {
var W = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
var A = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var i, j, s = 0;
var newid;
newid = id;
newid = newid.substring(0, 6) + '19' + newid.substring(6, id.length);
for (i = 0; i < newid.length; i++) {
j = parseInt(newid.substring(i, i + 1)) * W[i];
s = s + j;
}
s = s % 11;
newid = newid + A[s];
return newid;
}
function validateIdCard(value) {
let errorTip = '';
value = (value || '').replace(/\s/g, '');
if (!value) {
errorTip = '请输入身份证号码';
} else if (!veriIdentity(value)) {
errorTip = '请输入正确格式的身份证号码';
}
return errorTip;
}
fieldInput.js
import { validateIdCard } from './validate';
//身份证号码的输入
export const idCardInput = {
validate: validateIdCard,
format: formatIdCard,
filter: filterNumAndSpaAndChar
};