8721 sujets

Développement web côté serveur, CMS

Bonjour,

Sur mon site j'ai un champ téléphone.

Il m'arrive de temps en temps d'avoir des n° genre +1.78.88.89.79

J'ai un masque de saisie, qui me met les points après les 2 chiffres. Je viens de modifier mon code en imposant un 0 en premier chiffre du n° de téléphone. Ce qui donne 0, donc moins chance d'avoir le + vue que la case est déjà remplie.

J'ai un script en Javascript pour la mise en forme, qui fonctionne bien.

Ma question est la suivante, avez vous un autre moyen pour éviter ce genre de problème ?
Code en php ? 10 chiffres imposés avec des . tout les 2 chiffres pour lisibilité.

Le signe + arrive de temps en temps, ça doit venir du navigateur à mon avis. Champ pré rempli ça se fait automatiquement.

Merci de vos retours.

Bonne journée. Smiley murf
Modifié par Tintin75 (29 Sep 2017 - 08:58)
code JS
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")
obj.value=tel
break;
case (str.length>10) :
obj.value=str.substr(0,10).replace(/^(\d{2})(\d{2})(\{2})(\d{2})(\d{2})$/,"$1.$2.$3.$4")
}
}

code html
<input name='Phone' placeholder="Ex: 01.02.03.04.05" type='text' required="required" id="foo" onKeyUp="format(this)" size="14" maxlength="14" />
Modifié par Tintin75 (29 Sep 2017 - 08:59)
Modérateur
Ce code ne semble pas fonctionner, mais le numéro c'est un vrai exemple? Et c'est ce code javascript qui produit ce résultat? Parce que ce code javascript enlève systématiquement les +.
Le code fonctionne. J'ai des n° genre +3.44.22.45.48 de temps en temps.

c'est chiant si le client est à l'étranger, pour le joindre.

Ça arrive dans 10 ou 15 % des cas.
Modifié par Tintin75 (28 Sep 2017 - 17:50)
Mais ton champ, c'est uniquement pour les numéros de téléphone fixes et nationaux ? Parce que tous les numéros de téléphone (fixes ou mobile ) ne sont pas constitués de groupes de deux chiffres.
Modérateur
voilà ou je voulais en venir, le numéro en exemple ressemble pas mal à un numéro de mobile Suisse.

Plutôt que de gérer toutes les possibilités proprement (il va falloir plusieurs milliers de lignes de codes ou/et une bonne librairie), le plus simple est de ne rien faire.

Si ces numéros ont vocation à être utilisés par une machine, il est cependant possible de les standardiser: remplacer 00 par +, enlever les points / espaces et autres, etc.
Modifié par kustolovic (28 Sep 2017 - 18:11)
Merci, c'est pour des n° nationaux. France, Belgique, Suisse.

Le client me file son n° national, je me débrouille pour l'indicatif inter 33 32 49 ....

Je vais me pencher sur vos solutions, mais je crois que je suis au taquet. Je pense pas faire mieux que ce que j'ai en ce moment.

J'ai besoin du n° de téléphone dans le pays pour la livraison. Si le client est Belge, le livreur belge s'est que c'est un n° national. Donc un n° standard va très bien, pour lui. Si j'ai besoin d'appeler le client je connais les indicatifs par cœur, donc c'est pas un problème pour moi.

Le n° est utilisé par un humain et non une machine, heureusement pour moi. Smiley lol

Merci beaucoup pour vos retours, vos conseils et vos liens, c'est sympa. Smiley smile
Modifié par Tintin75 (28 Sep 2017 - 20:48)
Du point de vue de l'accessibilité, c'est toujours délicat d'imposer un motif qui ajoute/modifie des caractères au cours de la saisie. Il faut vraiment que ce soit bien fait pour que ça ne soit pas gênant à un moment où à un autre.
ET là je ne parle pas uniquement de lecteur d'écran ou de clavier: je suis suisse, je vois ton truc qui me groupe automatiquement les chiffres par deux, ça me perturbe, car en Suisse on a habituellement un groupe de trois (soit +41 XX XXX XX XX ou alors XXX XXX XX XX sans indicatif national).

Du coup, pour cette raison, je suis d'accord avec Kustolovic: le mieux c'est de ne rien imposer côté client, laisser l'utilisateur mettre des points ou des espaces s'il en a envie et là où il veut, puis ne transformer et valider la sisie uniquement côté serveur. En plus le caractère de séparation (s'il y a) est potentiellement lui aussi différent d'une région à une autre.

N'oublions pas que le meilleur formulaire est celui qui est le plus tolérant aux erreurs, et que chaque erreur ou comportement inattendu est une frustration pour l'utilisateur, qui aura tendance à abandonner.