Bonjour,
Il est des sujets qui ont tendance à faire couler de l'encre et celui-ci en fait définitivement partie.
Je suis maintenant en mesure de pouvoir vous apporter des précisions mais avant j'aimerai revenir sur vos réponses.
@Sepecat: Je suis tout à fait de ton avis quand à l'utilisation de JS. En effet, je préfère ne lui attribuer que des missions de confort non indispensables aux pages mais là, le demandeur l'exige. Je m'y plie.
J'ai bien noté ta suggestion sur le type d'évènement à mettre en surveillance et j’admets que la charge serait moindre avec un évènement de type
blur.
L'idée aussi selon laquelle tu découpe la chaîne en caractères individuels me reste dans un coin de l'esprit. Je pense implémenter cette méthode dans la validation côté serveur. En effet pour l'heure je traite la chaîne dans son intégrité et la rend invalide si elle ne contient pas que les caractères autorisé - ce qui implique de faire une liste des caractères interdits. Ta méthode permet de prendre la chose par son envers et de ne valider que les caractères autorisés.
@pchlj: l'usage de l'attribut title comme aide à la saisie n'est pas judicieuse. Un seul mot: tactile. En effet, comment fais-tu pour faire afficher le title sur ce type de périphérique de saisie ? L'aide à la saisie apparaîtra via une balise adjacente ; j'ai ma petite idée sur la question.
@kustolovic: Certes, nous souhaitons éviter le "full bullshit" comme tu dis. Chose faite par l'utilisation d'un pattern (plus souple) et de l'attribut maxlength mais surtout d'une validation côté serveur imperméable. Nous n'utiliserons pas JS pour la validation, juste pour la mise en forme.
Merci à tous pour votre participation qui, comme toujours, est fort instructive et mérite réflexion.
Maintenant, pour en revenir au vif du sujet, grâce à la journalisation des visites de Tintin, nous avons pus cerner le cas de figure où le script JS ne fonctionnait pas.
L'agent utilisateur révèle que l'utilisateur était sur Internet Explorer 11 (ou un ersatz). Je n'ai pas encore mis le doigt sur le pourquoi la validation du formulaire était impossible sans les points (j'ai besoin du concours de Tintin qui est indisponible pour le moment) mais je sais avec exactitude pourquoi le script ne fonctionne pas.
En effet cette ligne renvoi un message d'erreur:
let phoneNumber = phoneFields[i].value;
Le message retourné à la saisie est :
Impossible d’obtenir la propriété « value » d’une référence null ou non définie
Chose incompréhensible car querySelectorAll() fonctionne depuis IE9 et si phoneFields se révélait être vide, le script n'exécuterait pas jusqu'à ce point. De plus, .value semble lui aussi compatible IE11 donc mystère et boule de gomme.
Hormis le fait qu'il me faille faire en sorte que la validation du formulaire soit possible même si le script JS n'est pas actif (chose simple au demeurant). Je ne comprends pas comment rendre ce dernier compatible IE11.
Modifié par Greg_Lumiere (11 Mar 2018 - 17:46)