반응형
vuejs에서 전화(xxx-xxx-xxxxx)를 태그 로 포맷하는 방법
텍스트 상자에 전화번호를 연결하면서 텍스트 상자를 포맷할 수 있도록 하고 싶습니다.
질문에는 시도된 내용이나 달성 방법에 대한 정보가 많지 않기 때문에 나중에 재사용할 수 있는 공통 컴포넌트를 만들겠습니다.
표시할 숫자의 형식을 지정하는 필드의 워처 및 regexp를 사용하여 수행할 수 있는 작업
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>
언급URL : https://stackoverflow.com/questions/52319557/how-to-format-telephone-i-e-xxx-xxx-xxxx-in-vuejs-with-b-input-tag
반응형
'programing' 카테고리의 다른 글
Angular와 같이 Vue.js 컴포넌트를 작성하면서 HTML, JS 및 CSS 파일을 분리하여 유지할 수 있습니까? (0) | 2022.08.31 |
---|---|
컴포넌트 외부에서 VueI18n을 사용하는 데 문제가 있습니다. (0) | 2022.08.31 |
VueJ를 사용하여 객체의 여러 소품을 업데이트할 때 어떻게 반응성을 유도합니까? (0) | 2022.08.31 |
v-bind로 특성을 한 번만 바인딩하는 방법 (0) | 2022.08.31 |
C++에서 C로의 이행 (0) | 2022.08.31 |