Donnez vie à vos documents numériques !
 

Suppression des espaces dans un champ numéro de téléphone

abracadabraPDF Forums PDF – Général Suppression des espaces dans un champ numéro de téléphone

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46646
    traser
    Participant

    Bonjour,
    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”)

      }
    }

Affichage de 18 réponses de 1 à 18 (sur un total de 18)
  • Auteur
    Réponses
  • #69521
    bebarth
    Maître des clés

    bonjour,
    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é.
    @+

    #69522
    traser
    Participant

    Bonjour,
    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.$5

    Merci encore et bonne fin de journée

    #69523
    bebarth
    Maître des clés

    Si ç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:

    #69524
    traser
    Participant

    Bonjour,
    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
    @+

    #69525
    bebarth
    Maître des clés

    bonjour,
    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:

    #69526
    traser
    Participant

    Merci 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é.

    @+

    #69527
    bebarth
    Maître des clés

    bonjour,
    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:

    #69528
    traser
    Participant

    Ce 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ée

    #69529
    bebarth
    Maître des clés

    Voici pour toi !
    @+
    :bonjour:

    #69530
    traser
    Participant

    Bonjour,
    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

    @+

    #69531
    traser
    Participant

    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 !
    Qu’en penses-tu ?

    Bon week end

    #69532
    traser
    Participant

    Voici 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]

    #69533
    bebarth
    Maître des clés

    bonjour,
    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:

    #69534
    traser
    Participant

    Bonsoir,
    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

    @+

    #69535
    bebarth
    Maître des clés

    bonjour,
    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:

    #69536
    traser
    Participant

    Bonjour,

    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

    @+

    #69537
    bebarth
    Maître des clés
    #69538
    traser
    Participant

    Merci pour lien.

    @+

Affichage de 18 réponses de 1 à 18 (sur un total de 18)
  • Vous devez être connecté pour répondre à ce sujet.