Comment valider le numéro de mobile dans React Native accepte la seule valeur numérique.
<TextInput
ref='mobileNo'
keyboardType="numeric"
style={[styles.textInput, { width: '100%' }]}
placeholder='Enter mobile number'
onChangeText={(value) => this.handleChange('mobileNo', value)} />
J'ai utilisé keyboardType="numeric"
mais son caractère spécial accepte aussi donc je veux accepter la seule valeur numérique.
Vous devez vérifier si la chaîne d'entrée est numérique ou non. Vérifiez le code ci-dessous:
<TextInput
ref='mobileNo'
keyboardType="numeric"
style={[styles.textInput, { width: '100%' }]}
placeholder='Enter mobile number'
onChangeText={(value) =>
let num = value.replace(".", '');
if(isNaN(num)){
// Its not a number
}else{
this.handleChange('mobileNo', num)}
}
/>
Essayez d'utiliser keyboardType='phone-pad'
.
tilisez cette validation.
mobilevalidate(text) {
const reg = /^[0]?[789]\d{9}$/;
if (reg.test(text) === false) {
this.setState({
mobilevalidate: false,
telephone: text,
});
return false;
} else {
this.setState({
mobilevalidate: true,
telephone: text,
message: '',
});
return true;
}
}
Pour ce faire, vérifiez dans le gestionnaire onChangeText quelle entrée a été tapée et émettez une erreur si l'utilisateur a entré un caractère non numérique.
Si le champ est un composant contrôlé (sa valeur est définie à partir d'une variable d'état et la variable d'état est définie dans le gestionnaire onChangeText), vous ne pouvez pas du tout accepter le caractère non valide (de sorte que l'utilisateur tape, par exemple, un '.', et il n'est pas affiché).
C'est à vous de décider si vous expliquez à l'utilisateur pourquoi sa saisie n'est pas acceptée (soit en l'écrivant sur l'étiquette du champ, par exemple "numéro de téléphone (chiffres uniquement), soit dans une chaîne sous le champ, ou en affichant une erreur).
Vous pouvez également le faire et vous n'avez pas à utiliser if ou toute autre déclaration ...
Tout d'abord, téléchargez ce package dans votre dossier racine, il s'agit d'un package intégré de npm pour télécharger, tapez cette commande dans votre invite cmd ....
npm i react-native-validator-form
Importez-le ensuite dans votre projet.
import { Form, TextValidator } from 'react-native-validator-form';
Ensuite, créez une classe et étendez-la avec React.Component et copiez-collez le code suivant ...
state = {
phonenumber: ''
}
handleSubmit = () => {
this.refs.form.submit();
}
render() {
const {phonenumber} = this.state;
return (
<Form
ref="form"
onSubmit={this.handleSubmit}
>
<TextValidator
name="phonenumber"
validators={['required', 'isNumber','maxNumber:11']}
errorMessages={['Phonenumber is required', 'Phonenumber invalid' , 'Not a valid number ']}
placeholder="Phonenumber"
value={phonenumber}
onChangeText={(phonenumber) => this.setState({phonenumber})}
/>
<Button
title="Submit"
onPress={this.handleSubmit}
/>
</Form>
);
}