我想让文本框在将电话号码绑定到文本框中时进行格式化。
答案 0 :(得分:1)
鉴于该问题没有太多有关尝试过的方法或如何实现的信息,我将制作一个通用组件以供以后使用。
您可以使用监视程序和正则表达式在字段上将数字格式化为您要显示的内容
Vue.component('my-phone-input', {
template: `
<div>
<input type="text" v-model="formattedPhoneValue" @keyup="focusOut" @blur="focusOut"/>
</div>`,
data: function() {
return {
phoneValue: 0,
formattedPhoneValue: "0",
preventNextIteration: false
}
},
methods: {
focusOut: function(event) {
if (['Arrow', 'Backspace', 'Shift'].includes(event.key)) {
this.preventNextIteration = true;
return;
}
if (this.preventNextIteration) {
this.preventNextIteration = false;
return;
}
this.phoneValue = this.formattedPhoneValue.replace(/-/g, '').match(/(\d{1,10})/g)[0];
// Format display value based on calculated currencyValue
this.formattedPhoneValue = this.phoneValue.replace(/(\d{1,3})(\d{1,3})(\d{1,4})/g, '$1-$2-$3');
}
}
});
new Vue({
el: '#app'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
<my-phone-input></my-phone-input>
</div>