Когда пользователь выбирает код страны из раскрывающегося списка. Он заполняется в местной номере. Например, набор страны по умолчанию - это код страны '+39', когда я меняю на Ямайку с кодом страны '+1', он появляется в местной части номера телефона с до сих пор код страны с «+39». Я должен реконструировать номер телефона для проверки номера телефона.
import Keyboard from 'react-simple-keyboard';
import 'react-simple-keyboard/build/css/index.css';
import { MuiTelInput } from 'mui-tel-input';
const getCountryCode = (phoneStr) => {
const match = phoneStr.match(/^\+\d+/);
return match ? match[0] : '';
};
const getLocalNumber = (phoneStr) => {
const countryCode = getCountryCode(phoneStr);
return phoneStr.replace(countryCode, '').replace(/\D/g, '');
};
const getCallingCodeFromCountry = (countryCode) => {
try {
return '+' + getCountryCallingCode(countryCode);
} catch {
return '+39'; // fallback
}
{
const countryCode = getCountryCode(value) || getCallingCodeFromCountry(country);
let localNumber = getLocalNumber(value);
localNumber = localNumber.replace(/\D/g, '').slice(0, 10);
const newPhone = `${countryCode} ${localNumber}`;
setFormData({ ...formData, phone1: newPhone });
}}
onCountryChange={(newCountry) => setCountry(newCountry)}
onFocus={() => setFocusedField('phone1')}
defaultCountry={country}
forceCallingCode
label={t('confirmPhoneNumber')}
sx={{ mb: 2, width: '250px' }}
/>
< /code>
У меня есть клавиатура на экране, чтобы получить ввод от пользователя < /p>
if (button === '{bksp}') {
if (focusedField.startsWith('phone')) {
setFormData(prev => {
const countryCode = getCountryCode(prev.phone) || "+39";
let localNumber = getLocalNumber(prev.phone);
localNumber = localNumber.slice(0, -1);
const newPhone = localNumber ? `${countryCode} ${localNumber}` : countryCode;
return { ...prev, [focusedField]: newPhone };
});
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... en-using-m