abracadabraPDF › Forums › PDF – Général › Suppression des espaces dans un champ numéro de téléphone
- Ce sujet est vide.
-
CréateurSujet
-
9 août 2021 à 16:06 #46646
traser
ParticipantBonjour,
c’est la première fois que je poste un sujet, cela concerne un champs pour le contrôle d’un numéro de téléphone.
Le script que j’ai saisie dans le champ « Validation » me donne pas entière satisfaction, en effet si on insère un espace tous les 2 chiffres par exemple, j’ai un message d’erreur.
Je souhaiterais donc en début de script supprimer tous les espaces, il y a un utilitaire qui permet de prendre en compte que les 10 premiers chiffres qu’il rencontre (var v = util.printx(999999999, v), mais je ne sais pas l’intégrer dans le script ci-dessous, merci pour votre aide.
var re = /^[0][1-9]d{2}d{2}d{2}d{2}$/
if (event.value != « ») {
if (re.test(event.value) == false) {
app.alert(« Merci de saisir les 10 chiffresnnde votre numéro de téléphone »)}
} -
CréateurSujet
-
AuteurRéponses
-
10 août 2021 à 10:00 #69521
bebarthMaître des clésbonjour,
Pour retirer tous les espaces, tu écris :Code:event.value=event.value.replace(/ /g, » »);Sinon, tu regardes l’exemple joint. Il y a un script de touches personnalisé et un script de format personnalisé.
@+10 août 2021 à 14:26 #69522traser
ParticipantBonjour,
Merci pour le fichier et ta solution qui fonctionne super bien.Pour la partie « Validation »:
event.value=event.value.replace(/ /g, » »);
re = /^[0][1-9]d{8}$/
if (event.value != « ») {
if (re.test(event.value) == false) {
app.alert(« Merci de saisir les 10 chiffresnnde votre numéro de téléphone »)}
}Pour la partie format :
var format = /^([0][1-9])(d{2})(d{2})(d{2})(d{2})$/
if (format.test(event.value))
event.value = RegExp.$1 + » » + RegExp.$2 + » » + RegExp.$3 + » » + RegExp.$4 + » » + RegExp.$5Merci encore et bonne fin de journée
10 août 2021 à 19:11 #69523
bebarthMaître des clésSi ça te convient !
Mais si je peux me permettre voici quelques commentaires :
Je préfère personnellement le script de touches au script de validation qui vérifie uniquement lorsque tout est frappé alors qu’avec le script de touches il est impossible de frapper un mauvais caractère ni plus de caractères…Ton script de format est bien compliqué pour se qu’il sert ! On voit que tu a étudié les expressions régulières vu que tu utilises les mémoires $, mais le test de la chaine de caractères est ici inutile vu qu’il a déjà été effectué pour la validation.
@+
:bonjour:11 août 2021 à 08:34 #69524traser
ParticipantBonjour,
C’est vrai que le script de format est compliqué et fait double emploi. Je essayer ton script qui est bien expliqué au niveau de tes commentaires.Je ne connais pas toutes les références javascript que tu as utilisées, mais je vais regarder cela sur le document « JavaScript for Acrobat api reference » car je suis débutant.
bonne journée
@+11 août 2021 à 09:30 #69525
bebarthMaître des clésbonjour,
Une petite précision de plus :
Dans ton script de validation il n’est pas nécessaire de supprimer les espace avec event.value=event.value.replace(/ /g, » »); vu qu’elles sont rajoutées en script de format !
Mais vu que tu peux taper n’importe quel caractère, tu peux supprimer tous ceux qui ne sont pas un chiffre avec event.value=event.value.replace(/D/g, » »);
@+
:bonjour:11 août 2021 à 13:03 #69526traser
ParticipantMerci pour le conseil (je l’ai intégré dans le script), j’ai testé ton exemple du fichier, j’ai trouvé une particularité pour un numéro de téléphone qui doit être rejeté. Je veux saisir 0012345678, mais impossible de saisir le dixième chiffre le 8. Il y a bien le message d’erreur et lorsque j’appuie sur OK (du message d’erreur) le dernier numéro valide s’affiche à la place !
Le script des touches est complexe pour moi, je vais essayer de voir son fonctionnement.J’ai modifié le script de format, celui de ton exemple est beaucoup plus simple et adapté.
@+
11 août 2021 à 15:01 #69527
bebarthMaître des clésbonjour,
En fait c’est normal par rapport à l’expression régulière écrite qui d’ailleurs comporte une faute par rapport à ce que je voulais écrire car pour moi un numéro de téléphone ne commence pas par 00. Donc voici l’expression correcte qui interdit le double zéro :Code:var modeleRegEx=/^(0([1-9]d{0,8})?)?$/;L’expression écrite précédemment était var modeleRegEx=/^(0[1-9]?d{0,8})?$/; qui signifie un 0 puis un chiffre de 1 à 9 non obligatoire puis de 0 à 8 chiffres. Vu que le second chiffren’est pas obligatoire, on passe à la troisième condition qui est un chiffre de 0 à 9 donc il y a possibilité d’un double 0 au début et dans ce cas le nombre ne comportera que 9 chiffres (J’espère être clair…).
Si tu veux la possibilité d’un double zéro avec 10 chiffre il suffit d’écrire :Code:modeleRegEx=/^(0d{0,9})?$/;@+
:bonjour:11 août 2021 à 17:50 #69528traser
ParticipantCe n’était pas évident de trouver l’erreur avec ce ?, j’ai testé et ça fonctionne bien.
je l’ai adapter pour le code postal (script de touche) : OK, mais quand j’ai voulu rajouter les particularités pour ce code postal, ça ne fonctionne pas.Actuellement, par défaut le fond du champ est vert et il affiche CP (en blanc), je clique dans le champ : CP disparait, lorsque je saisie un chiffre le texte devient noir.Si le champ est vide et pas activé le texte CP s’affiche en blanc.
Mais en intégrant le script de touche dans format, j’ai un message d’erreur qui m’indique que CP ne correspond au format (ce qui est vrai), donc je suis obligé de passer par un script de « Validation ».
Pour info, je te joins le fichier avec le code postal
Bonne soirée11 août 2021 à 19:58 #69529
bebarthMaître des clésVoici pour toi !
@+
:bonjour:12 août 2021 à 07:55 #69530traser
ParticipantBonjour,
Je te remercie beaucoup pour ton aide, je ne serais jamais arrivé à ce super résultat. Le formulaire auquel je travaille c’est pour une association de marche nordique dont je suis bénévole.
Maintenant il me reste à décortiquer le script pour comprendre comment il fonctionne.Merci encore
@+
14 août 2021 à 13:15 #69531traser
ParticipantBonjour,
J’ai voulu améliorer le contrôle du code postal en interdisant le 00 et les codes postaux débutants par 96 avec une expression régulière /^((0[1-9])|([1-9][0-5]))d{3}$/ mais ça ne fonctionne pas avec le script de touche (par contre c’est ok dans « Validation »). Je pense que cette expression est plus complexe pour la saisie à la volée car il y a une fonction OU !
Qu’en penses-tu ?Bon week end
14 août 2021 à 17:31 #69532traser
ParticipantVoici pour toi !
@+
:bonjour:
Bonjour,J’ai voulu améliorer le contrôle du code postal en interdisant le 00 et les codes postaux débutants par 96 avec une expression régulière /^((0[1-9])|([1-9][0-5]))d{3}$/ mais ça ne fonctionne pas avec le script de touche (par contre c’est ok dans « Validation »). Je pense que cette expression est plus complexe pour la saisie à la volée car il y a une fonction OU ![font=open sans, helvetica, arial, sans-serif] Qu’en penses-tu ?
J’ai fait quelques essais et je viens de trouver celle ci qui fonctionne /^((0([1-9]d{0,3})?)|([1-9]([0-5]d{0,3})?))?$/
Bon week end
[font=verdana, arial, helvetica, sans-serif]@+[/font][/font]15 août 2021 à 16:50 #69533
bebarthMaître des clésbonjour,
Es-tu certain de pouvoir écrire 26000 ou 47000 par exemple. Il te manque des conditions.
Voici l’expression pour le script de touches :Code:var modeleRegEx=/^((0([1-9]d{0,3})?)|([1-8]([0-9]d{0,3})?)|(9([0-57-9]d{0,3})?))?$/;Il y a certainement plus court, mais cela demande plus de réflexion !!!
@+
:bonjour:15 août 2021 à 17:46 #69534traser
ParticipantBonsoir,
En effet, elle était pas terrible mon expression, et je suis passé à coté de beaucoup de cas concernant les codes postaux. Merci pour ton travail. J’ai du mal à comprendre pourquoi tu écris :
– d{0,3} et pas d{3}
– et la fonction du ? que l’on retrouve plusieurs fois dans l’expression.
Je bloque vraiment sur ces 2 points.Bonne soirée
@+
16 août 2021 à 07:19 #69535
bebarthMaître des clésbonjour,
Pour un script de validation tu ne vérifies que la chaîne de caractères finale. Donc si tu veux 3 chiffres tu écris d{3}.
Pour un script de touche il faut vérifier l’ensemble de la chaîne à chaque fois que tu ajoutes un caractère. Donc si au final tu veux 3 chiffres, en cours de frappe il faut vérifier que tu as bien 0 puis 1 puis 2 puis 3 chiffres. D’où d{0,3} de 0 à 3.
? c’est 0 ou 1 fois donc identique à {0,1}.
@+
:bonjour:16 août 2021 à 07:55 #69536traser
ParticipantBonjour,
Merci pour cette information.
Sur le Javascript Adobe, il n’y pas de livre sur le sujet en français et très peu en anglais. Heureusement il y a les forums :extra:Bonne journée
@+
16 août 2021 à 08:00 #69537
bebarthMaître des clés16 août 2021 à 08:13 #69538traser
ParticipantMerci pour lien.
@+
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.
