如何使用 <b-input > 标签在 vuejs 中格式化电话(即 xxx-xxx-xxxx)

Posted

技术标签:

【中文标题】如何使用 <b-input > 标签在 vuejs 中格式化电话(即 xxx-xxx-xxxx)【英文标题】:How to format telephone (i.e. xxx-xxx-xxxx) in vuejs with <b-input > tag 【发布时间】:2019-02-18 12:49:09 【问题描述】:

我想在将电话号码绑定到文本框时启用文本框进行格式化。

【问题讨论】:

请提供您尝试过的示例代码。 【参考方案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(/(\d1,10)/g)[0];

						// Format display value based on calculated currencyValue
            this.formattedPhoneValue = this.phoneValue.replace(/(\d1,3)(\d1,3)(\d1,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>

【讨论】:

它应该在我们输入时在文本框中应用格式。 完成了,现在要试试吗?

以上是关于如何使用 <b-input > 标签在 vuejs 中格式化电话(即 xxx-xxx-xxxx)的主要内容,如果未能解决你的问题,请参考以下文章

如何根据使用的 IOS 设备在 head 标签中使用不同的 <link> 标签?

如何使用javascript和jquery中的<a>标签在新标签中打开链接[重复]

如何在 ASP.NET 中使用 <label> 标签?

如何在页面输出HTML标签

如何在 Angular 指令中使用 <head> 标签

如何在 Apache 2.4 上使用标签 <If ...> 测试文件是不是存在?