Форматирование телефонного номера в React
Как форматировать инпут с 89098902834 на 8(909) 890-28-34? Нужно чтобы значение менялось на событии onChange
const [inpValue, setInputValue] = useState("");
useEffect(() => {
//как конвертировать номер
}, [inpValue]);
<input
type="tel"
placeholder="+7 (999) 999-99-99"
value = {inpValue}
onChange={(e) => {
setInputValue(e.target.value);
}}
/>
Ответы (1 шт):
Автор решения: T0xee.n17
→ Ссылка
Используйте библиотеку libphonenumber-js.
import { isValidPhoneNumber, parsePhoneNumber } from 'libphonenumber-js'
const input = '89098902834'
const convertPhoneNumber = (inp) => {
if (isValidPhoneNumber(inp, 'RU')) {
const phoneNumber = parsePhoneNumber(inp, 'RU')
return phoneNumber.formatNational()
}
return inp
}
convertPhoneNumber(input) // 8 (909) 890-28-34
Соответственно если вы хотите вызывать функцию в onChange, то:
onChange = {(e) => { setInputValue(convertPhoneNumber(e.target.value)) }