controle de saisie d'un numero de telephone

a marqué ce sujet comme résolu.

Bonjour, je voudrais faire un controle saisie sur un numero de telephone que je saisie par un "input. il faudrais que l’adherent saisisse "010230405" et que l’on ne puisse pas sasisir de lettre ou de blanc et que la forme stocké dans ma base SQL soit de la forme "01.02.03.04.05".

j’ai essayé :

<td style="height: 4px; width: 40%;">Votre Téléphone (Ex: 0123456789)<</td>
<td style="height: 4px">
    <input type="text" name="tel_adh" id="tel_adh"  required="required" onchange="format(this)" size="14" maxlength="14 class="input_form" value='' 
    style="width:20%;height: 25px">
   
</td>

<script type="text/javascript" language="javascript">

function format(obj)
	{
	var str=obj.value.replace(/-|\./g,'')
	
	switch(true){
		case (str.length<10) : break;
		case (str.length==10):
			tel=str.replace(/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/,"$1.$2.$3.$4.$5")
			obj.value=tel
			break;
		case (str.length>10) :
			obj.value=str.substr(0,15).replace(/^(\d{2})(\d{2})(\{2})(\d{2})(\d{2})$/,"$1.$2.$3.$4.$5")
		}
        
	}	

mais cela ne fonctionne pas. pouvez-vous m’aider Merci


Modification par @Amaury : mise en forme du code

+0 -0

Gérer correctement un numéro de téléphone, c’est toujours quelque chose de délicat, surtout si on veut faire ça proprement. Et si on veut le faire proprement, c’est très vite très complexe.

Là par exemple, dans ton cas, tu ne peux gérer que des numéros de France métropolitaine. Est-ce que c’est bien ce dont tu as besoin ?

Quelques remarques en vrac :

  • Stocker le format avec des points en BDD me semble à priori étrange. Pourquoi ce choix ? Personnellement je stockerais le numéro sous la forme normalisée la plus courte 0123456789 (c’est une chaine de caractères !) en BDD, avec une transformation le plus tard possible si besoin.
  • Il existe un format d’input HTML dédié aux numéros de téléphone, cf la documentation très complète avec des exemples.
  • Là tu fais un contrôle en JavaScript côté navigateur, n’oublie pas que tu dois faire le même contrôle côté serveur, parce que rien ne te garantit que l’utilisateur est passé par ton JS de contrôle.
  • Dans une balise <script> l’attribut language est déprécié, et l’attribut text devrait être laissé vide si c’est un script JavaScript (cf cette documentation).
  • Je ne sais pas de quel niveau de vérification tu as besoin, mais le premier chiffre est sans doute toujours 0, le second chiffre n’est jamais 0, et probablement pas 8.

que l’on ne puisse pas sasisir de lettre ou de blanc

Je n’ai jamais compris ces trucs casse pied pour les usagers… Typiquement, ce genre de formulaire qui veut empêcher de copier-coller un numéro valide et donc augmenter le temps de saisie et les risques d’erreur puisqu’il faut patiemment tout recopier. Perso, le genre de truc qui peut me faire abandonner un panier et passer chez la concurrence.

que la forme stocké dans ma base SQL soit de la forme "01.02.03.04.05".

La forme stockée ne dépend pas des usagers et est gérée côté serveur. C’est entièrement indépendant de la saisie : tu fais ton formatage avant insertion en base. Par contre, je n’arrive pas à imaginer de cas où les points seraient vraiment utiles…

+3 -0

Je te conseille d’utiliser un service tiers comme cette librairie qui va bien.

https://github.com/google/libphonenumber

Parceque la validation de numéro de téléphone c’est très complexe et casse gueule Un article à ce sujet: https://www.google.be/amp/s/programmation.developpez.com/actu/317436/Vingt-fausses-idees-que-se-font-les-developpeurs-au-sujet-des-numeros-de-telephone-quelles-sont-les-plus-courantes/%3famp

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte