Как отформатировать ввод текста в качестве номера телефона, используя реактивный - PullRequest
1 голос
/ 12 ноября 2019

Когда пользователь вводит свой номер телефона, я хочу, чтобы номер отображался в формате номера телефона, например (123) 456-7890

Я не уверен, как это сделать, но этокод, который у меня есть на данный момент.

Using UseState:

const [PNumber,setPNumber] = useState();

В My TextInput:

<TextInput
  style={Fonts.Inp}
  keyboardType={'number-pad'}
  placeholder="(604) 333-3333"
  placeholderTextColor='gray'
  maxLength={10}
  onChangeText = {(Text)=> setPNumber(Text)}
/>

Так что в настоящее время он отображается как «1234567890». Я хотел бы показать как (123) 456-7890

1 Ответ

0 голосов
/ 12 ноября 2019

Попробуйте,

_onChangeText = (text) => {
  let formatedNo = this.formatMobileNumber(text);
  this.setState({ phone: formatedNo });
};

formatMobileNumber=(text=> {
  var cleaned = ("" + text).replace(/\D/g, "");
  var match = cleaned.match(/^(1|)?(\d{3})(\d{3})(\d{4})$/);
  if (match) {
    var intlCode = match[1] ? "+1 " : "",
      number = [intlCode, "(", match[2], ") ", match[3], "-", match[4]].join(
        ""
      );
    return number;
  }
  return text;
}

...
<TextInput       
    maxLength={maxLength}
    keyboardType={keyboardType}
    onChangeText={text => {
       this._onChangeText(text);
    }}
    placeholder={placeholder}
    placeholderTextColor={Constants.APP_TEXT_GRAY_COLOR}
    value={value}
 />
...
...