大佬们,二次封装了vant的组件,主要效果是用户输入的银行卡号自动4位分割出来一个空格,给后端提交数据的时候呢又是去掉空格的,功能是没问题,但是如果在input中间添加或者删除内容时光标会自动跳到末尾去,如何计算光标位置太难了,求助大佬们,非常感谢
<template>
<van-field
v-model="innerValue"
v-bind="$attrs"
v-on="$listeners"
>
<template v-for="(index, name) in $slots" :slot="name">
<slot :name="name" />
</template>
</van-field>
</template>
<script>
export default {
inheritAttrs: false,
model: { event: 'filtered' },
props: {
value: { default: '' },
},
data() {
return {}
},
computed: {
innerValue: {
get() {
return this.value.replace(/\D/g, '').replace(/(\d{4})(?=\d)/g, '$1 ')
},
set(value) {
this.$emit('filtered', value.replace(/\D/g, ''))
}
}
},
methods: {}
}
</script>