Donnez vie à vos documents numériques !
 

Urgent :perte du zero a gauche dans un champ de saisie!!

abracadabraPDF Forums PDF – Général Urgent :perte du zero a gauche dans un champ de saisie!!

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #43328
    phebus
    Invité

    Help!!!

    J’ai créé un formulaire avec Acrobate (version7) qui comporte plusieurs champs de saisie . Nom, adresse, puis numero de compte.

    Le champ numero de compte est defini sans format (jai fait un essai avant avec nombre).

    Je contrôle ensuite les champs avec un script javascript activé avec un bouton valider.

    si je saisi dans mon champ compte 12345, je reçoi dans la variable javascript ‘12345’

    si je saisi 01234 je reçoi 1234 (le 0 n’est pas reçu).

    Il faut que je recupere tous les caractères (meme ce zero non significatif)!!

    Est-ce un pb avec acrobate ? un pb javascript ?

    Avez-vous des idées c’est urgent !!

    Merci par avance pour vos réponses

Affichage de 13 réponses de 1 à 13 (sur un total de 13)
  • Auteur
    Réponses
  • #48144
    Merlin
    Maître des clés

    Les champs texte au format nombre ont la manie de tronquer le (ou les) zéro qui est à gauche puisqu’il ne sert à rien.

    Pour contourner le problème il suffit d’utiliser un champs texte sans format et de lui ajouter le script suivant en “script de touche personnalisé”. Script qui n’autorise que la saisie numérique.

    Code:
    if (event.change.charCodeAt(0) > 13)

    {

    if (event.change.charCodeAt(0) event.change.charCodeAt(0) > 57)

    {app.beep ();

    event.rc = false;}

    :salu: 😉 :salu: :afro: :salu:

    #48145
    phebus
    Invité

    Le problème est que j’utilise un champ texte sans format.

    (je m’étais rendu compte du pb en mettant format nombre)

    J’en déduit que dans ce champ si on ne met que du numerique, acrobat ou le javascript associe concidère que c’est un nombre et le (les) zeros de gauche sont tronqués.

    #48146
    Merlin
    Maître des clés

    Un champs texte sans format accepte toutes les entrées, l’intéret de ce script est qu’il limite l’entrée aux caractères numériques. Comme le champs n’est donc pas au format “nombre” il ne tronque pas les zéros de gauche.

    :afro:

    #48147
    phebus
    Invité

    Je suis d’accord pour le contrôle, j’execuse un script de type; cependant le probleme n’est pas là:

    – dans ce champ de type texte (sans format) :

    si

    je saisi 01AB je reçois bien 01AB dans ma variable javascript

    si

    je saisi 0111 je reçois 111 dans ma variable comme si le champ était défini en type nombre.

    Hors il me faut 0111

    Voilà!! :-k

    #48148
    phebus
    Invité

    Je suis d’accord pour le contrôle, j’execuse un script de type; cependant le probleme n’est pas là:

    – dans ce champ de type texte (sans format) :

    si

    je saisi 01AB je reçois bien 01AB dans ma variable javascript

    si

    je saisi 0111 je reçois 111 dans ma variable comme si le champ était défini en type nombre.

    Hors il me faut 0111

    Voilà!! :-k

    #48149
    Merlin
    Maître des clés
    phebus wrote:
    si je saisi 01AB je reçois bien 01AB dans ma variable javascriptCa veut dire que le script ne fonctionne pas car il devrait interdire la saisie du “A” et du “B”…

    :salu: :salu:

    #48150
    phebus
    Invité

    J’ai pris quelque raccourci dans mon explication de départ donc je détaille au maximum

    :

    j’ai un script qui marche et qui vérifie :

    qu’un champ contient 11 caractères numériques.

    ce champ dans le formulaire est défini en mode texte sans format.

    Si je saisi 12345678901 c’est ok validé par le script.

    Si je saisi 123456789ab c’est ko rejeté parle script

    Si je saisi 01234567890 c’est ko rejeté par le script qui indique que le champ ne fait pas 11 de long, car je reçois dans mon champ 1234567890 (je perds le 0 de gauche comme si mon champ est de type nombre)

    J’ai donc fait le test suivant :

    description du champ type texte sans format puis suppression du script de contrôle.

    Si je saisi 12345678910 je reçois 12345678901

    Si je saisi 012345678910 je reçois 1234567891 (perte du zero de gauche)

    Si je saisi 01234567890a je reçois 01234567890a (pas de perte du zero)

    Je conclue que le pdf interprete ma saisi qd elle est numerique comme un nombre et enlève le 0 de gauche non significatif.

    Vois tu mon pb ?? Y a t’il une astuce.

    #48151
    Merlin
    Maître des clés

    Si je saisi 12345678910 je reçois 12345678901

    Si je saisi 012345678910 je reçois 1234567891 (perte du zero de gauche)

    Soit il y a une erreur, soit tu perd aussi le zéro qui est à droite… ;-)

    En fait ton problème a à voir avec la façon dont JavaScript gère les données, comme tu ne lui précise pas qu’il faut les manipuler comme des données texte il les manipule automatiquement comme des données nombre s’il n’y a que des caractères numériques. C’est le comportement par défaut.

    C’est une question que j’ai déjà vu sur un forum US il y a x années, mais comme je ne me souviens pas de la réponse exacte je te renvoie à la doc, mais ce n’est pas très difficile : il faut préalablement déclarer les données comme étant de type texte pour qu’elles soient manipulées en tant que telles.

    :thumb:

    #48152
    phebus
    Invité

    ](*,)

    Je commence à fatiguer, jai les yeux qui se croisent!! car je perds bien uniquement le zero de gauche.

    Si je saisi 12345678910 je reçois 12345678910

    Si je saisi 012345678910 je reçois 12345678910 (perte du zero de gauche)

    Pour le typage du javascript j’y ai pensé je travaille là dessus pour forcer la zone de reception.

    Je n’ai pas encore trouve.

    #48153
    Merlin
    Maître des clés

    Je pense que ce JavaScript t’aidera beaucoup :

    http://forum.sos-pdf.com/viewtopic.php?t=814

    :salu: 😉

    #48154
    phebus
    Invité

    Tout d’abord merci pour ce lien je vais le décortiquer.

    Mon problème vient bien du typage de mon champ, il faut arriver à forcer le getField:

    Sachant que dans le formulaire mon champ adr1 est de type texte sans format:

    J’ai codé :

    Adr1 =””+this.getField(“Adr1”).value;

    en résulat

    si je saisi 01A Adr1 = 01A

    si je saisi 001 Adr1 = 1 hors il me faut absolument Adr1 = 001,

    Voilà

    :salu:

    #48155
    phebus
    Invité

    Merlin ,

    j’ai trouvé la solution dans le lien que tu m’as indiqué :

    ChaineOrigine=this.getField(“Texte”).valueAsString;

    c’est le valueAsString qui fait la différence. :sun:

    Cela me va parfaitement.

    Merci pour ton aide.

    :salu:

    #48156
    Merlin
    Maître des clés

    Oui, c’est bien ça. Ca change tout !

    :afro:

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