需求:
只显示身份证号的前四位和后四位,中间的部分用 * 号替代。
实现步骤:
- 定义一个方法来处理身份证号的脱敏:
methods: {
maskIdCard(idCard) {
if (!idCard) return '';
const visibleDigitsStart = 4; // 前面可见的位数
const visibleDigitsEnd = 4; // 后面可见的位数
const maskedLength = idCard.length - visibleDigitsStart - visibleDigitsEnd;
const maskedSection = '*'.repeat(maskedLength);
const visibleStart = idCard.slice(0, visibleDigitsStart);
const visibleEnd = idCard.slice(-visibleDigitsEnd);
return visibleStart + maskedSection + visibleEnd;
},
tapCertificateNo() {
// 处理点击事件的逻辑
console.log('身份证号被点击');
}
}
- 在模板中调用这个方法:
<template>
<view>
<u--text class="idcard" mode="name" @tap="tapCertificateNo" :text="maskIdCard(item.idCard)" format="encrypt"></u--text>
</view>
</template>
- 完整的示例代码:
<template>
<view>
<u--text class="idcard" mode="name" @tap="tapCertificateNo" :text="maskIdCard(item.idCard)" format="encrypt"></u--text>
</view>
</template>
<script>
export default {
data() {
return {
item: {
idCard: '123456789012345678'
}
};
},
methods: {
maskIdCard(idCard) {
if (!idCard) return '';
const visibleDigitsStart = 4; // 前面可见的位数
const visibleDigitsEnd = 4; // 后面可见的位数
const maskedLength = idCard.length - visibleDigitsStart - visibleDigitsEnd;
const maskedSection = '*'.repeat(maskedLength);
const visibleStart = idCard.slice(0, visibleDigitsStart);
const visibleEnd = idCard.slice(-visibleDigitsEnd);
return visibleStart + maskedSection + visibleEnd;
},
tapCertificateNo() {
// 处理点击事件的逻辑
console.log('身份证号被点击');
}
}
};
</script>
<style scoped>
.idcard {
/* 你的样式 */
}
</style>
在这个示例中,maskIdCard 方法会将身份证号的前四位和后四位保留,中间的部分用 * 号替代。这样就可以实现你想要的效果。