Skip to content

Commit 4343d0f

Browse files
authored
Merge pull request #23 from zirreal/main
improved number input
2 parents 3e0129c + c562c71 commit 4343d0f

File tree

1 file changed

+25
-23
lines changed

1 file changed

+25
-23
lines changed

src/components/FormPopup.vue

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -100,38 +100,40 @@ function formatPhone(e: Event) {
100100
let input = (e.target as HTMLInputElement).value;
101101
102102
103-
let digits = input.replace(/\D/g, '');
103+
const startsWithPlus = input.startsWith('+');
104104
105105
106-
if (digits.startsWith('8')) {
107-
digits = '78' + digits.slice(1);
108-
} else if(digits.startsWith('9')) {
109-
digits = '79' + digits.slice(1);
110-
} else if (digits.startsWith('7')) {
111-
} else if (!digits.startsWith('7')) {
112-
digits = '7' + digits;
113-
}
106+
let digits = input.replace(/\D/g, '');
114107
115-
let formatted = '+7';
108+
let formatted = '';
116109
117-
if (digits.length > 1) {
118-
formatted += ' (' + digits.slice(1, 4);
119-
}
120-
if (digits.length >= 5) {
121-
formatted += ') ' + digits.slice(4, 7);
122-
}
123-
if (digits.length >= 8) {
124-
formatted += '-' + digits.slice(7, 9);
125-
}
126-
if (digits.length >= 10) {
127-
formatted += '-' + digits.slice(9, 11);
110+
if (startsWithPlus) {
111+
formatted = '+';
112+
113+
114+
if (digits.startsWith('7')) {
115+
digits = digits.slice(1);
116+
formatted += '7';
117+
118+
if (digits.length > 0) formatted += ' (' + digits.slice(0, 3);
119+
if (digits.length >= 4) formatted += ') ' + digits.slice(3, 6);
120+
if (digits.length >= 7) formatted += '-' + digits.slice(6, 8);
121+
if (digits.length >= 9) formatted += '-' + digits.slice(8, 10);
122+
}
123+
} else {
124+
if (digits.startsWith('8')) digits = '7' + digits.slice(1);
125+
else if (digits.startsWith('9')) digits = '79' + digits.slice(1);
126+
else if (!digits.startsWith('7')) digits = '7' + digits;
127+
formatted = '+7';
128+
if (digits.length > 1) formatted += ' (' + digits.slice(1, 4);
129+
if (digits.length >= 5) formatted += ') ' + digits.slice(4, 7);
130+
if (digits.length >= 8) formatted += '-' + digits.slice(7, 9);
131+
if (digits.length >= 10) formatted += '-' + digits.slice(9, 11);
128132
}
129133
130-
131134
form.value.phone = formatted;
132135
}
133136
134-
135137
async function sendEmail(token: string) {
136138
if (!formRef.value) return;
137139

0 commit comments

Comments
 (0)