web-dev-qa-db-fra.com

React Native - comment taper SEULEMENT le pavé numérique (sans ponctuation)

Existe-t-il un moyen de saisir un pavé numérique sans ponctuation?

<TextInput keyboardType='numeric' ..... />

si j'utilise secureTextEntry={true}, il obtient le bon clavier que je veux, mais les valeurs sont remplacées par *.

c'est donc ce que je reçois: enter image description here

C'est ce que je veux: enter image description here

7
Raheel Hasan

As-tu essayé number-pad? tous les deux number-pad et numeric fonctionnent pour moi sur iOS.

3
Karim Varela

J'ai eu le même problème.

Je pourrais résoudre faire quelque chose comme ça:

keyboardType={Device.isAndroid ? "numeric" : "number-pad"}

puis dans un appel de méthode à partir de onChangeText en faisant ceci:

const cleanNumber = number.replace(/[^0-9]/g, "");

this.setState({
  cleanNumber
});

et la valeur prop de TextInput

value={this.state.cleanNumber}
2
Miguel Cardenas

React native non fourni keyboardType qui supprime la ponctuation du clavier. Vous devez utiliser une expression régulière avec la méthode replace pour supprimer la ponctuation du texte et définir keyboardType = 'numeric'.

Expression régulière

/ [- # *;,. <> {} []\/]/gi

Exemple de code

 onTextChanged(value) {
    // code to remove non-numeric characters from text
    this.setState({ number: value.replace(/[- #*;,.<>\{\}\[\]\\\/]/gi, '') });
  }

Veuillez vérifier le lien de collation

https://snack.expo.io/@vishal7008/1e004c

1
Vishal Dhanotiya

keyboardType = {"pavé numérique"} Fonctionne sur Android. Remarque: j'utilise FormInput à partir de react-native-elements.

1
Jithesh Kt