Donnez vie à vos documents numériques !
 

Limiter un champ à une plage de saisie

abracadabraPDF Forums PDF – Général Limiter un champ à une plage de saisie

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45375
    jeanine63000
    Membre

    Bonjour,

    J’ai cherché dans les rubriques, mais je n’ai pas trouvé comment faire pour limiter dans un champ la valeur de saisie. Exemple : je souhaite que la personne ne saisisse dans le champ que les chiffres situés entre 0 et 6. Comment faire et où inscrire le script.

    Merci par avance de vos réponses.

Affichage de 15 réponses de 1 à 15 (sur un total de 15)
  • Auteur
    Réponses
  • #60456
    alex
    Participant

    Bonjour à tous,
    Voici ci-joint l’illustration de plusieurs types de contrôles de saisie.
    1-Contrôle après saisie complète sur un champ non formaté. Saisie limitée aux nombres de 0 à 9
    2-Contrôle du digit unique sur un champ non formaté . Saisie limitée à un nombre du segment 0-6
    3-Contrôle digit par digit sur un champ non formaté . Saisie limitée aux nombres de 0 à 6
    4-Contrôle standard sur un champ formaté nombre sans recours à un script.
    Par ailleurs je vous joins une table ASCII qui vous permettra de retrouver les codes à utiliser dans les scripts.

    #60457
    alex
    Participant

    Et voici les exemples (on est limité à une pièce jointe apparemment).

    #60458
    jeanine63000
    Membre

    Merci Alex.

    Je ne comprends pas pourquoi le script indique 54 et 48 alors que la limite est 6

    if(codedigit>54|codedigit<48){saisieOK=false;}

    Si par exemple je veux limiter la saisie à un chiffre compris entre 0 et 4, qu’est-ce que j’inscris ?

    Merci pour de plus amples explications, si le temps vous le permets…

    #60459
    Merlin
    Maître des clés

    Je ne comprends pas pourquoi le script indique 54 et 48 alors que la limite est 6

    Les chiffres utilisés dans le script correspondent au code ASCII des caractères “0” et “6”.

    #60460
    Merlin
    Maître des clés

    comment faire pour limiter dans un champ la valeur de saisie.

    Remercions Alex pour sa réponse très complète, cependant Adobe a prévu une méthode plus simple, dans l’onglet Format des Propriétés il faut déclarer le champ en format Nombre et ensuite ça se passe dans l’onglet Validation, voir capture jointe.

    #60461
    Merlin
    Maître des clés

    (on est limité à une pièce jointe apparemment)

    Je ne sais plus s’il y a une limite, mais on peut en mettre plusieurs.

    #60462
    jeanine63000
    Membre

    Bonjour,

    2 solutions pour une question, c’est parfait. Que demander de plus.

    Merci beaucoup pour votre investissement, très précieux pour l’ensemble des utilisateurs de ce site “magique”.

    #60463
    alex
    Participant

    Et oui, j’ai eu tort de mettre la solution basique d’Adobe (sans script) en quatrième position de mon exemple:
    4-Contrôle standard sur un champ formaté nombre sans recours à un script.
    Elle aurait du figurer en tête!
    Cependant, dès qu’on sort de cet usage basique  (limitation de la saisie à une plage numérique unique min/max), le script s’impose et permet des analyses beaucoup plus fines (plages multiples et disjointes, saisies combinées de chiffres et de caractères alphanumériques, et autres contraintes) et des alertes adaptées.

    #60464
    Merlin
    Maître des clés

    Justement, je cherche en ce moment comment interdire la saisie de chiffres dans un champ texte, de la même façon que pour les lettres dans un champ Nombre (juste un bip) et curieusement je ne trouve aucun exemple ni documentation nulle part. Y compris sur les forums américains.

    En fait ce qui me manque c’est surtout la formule qui détecte si la saisie est un chiffre.
    Aurais tu une idée ?

    #60465
    alex
    Participant

    Bonjour Merlin,
    Voici une nouvelle maquette dédiée à la détection des saisies non numériques dans un champ texte. Je pense que l’item 3 répond à ton problème. A chaque fois qu’un digit est saisi on teste sa nature en s’assurant que son code ASCII est bien sur le segment 0-9 (codes ASCII 48 à 57).

    Conseillé:
    Onglet Format: script de touches personnalisé:

    saisie=this.event.change;
    codedigit=saisie.charCodeAt(0);
        if(codedigit>57|codedigit<48)
        {
        this.event.change=””;
        app.beep(0);
        }

    Nota: pas de beep sur Mac !

    #60466
    Merlin
    Maître des clés

    Conseillé:
    Onglet Format: script de touches personnalisé:

    saisie=this.event.change;
    codedigit=saisie.charCodeAt(0);
        if(codedigit>57|codedigit<48)
        {
        this.event.change=””;
        app.beep(0);
        }

    En fait c’est l’inverse que je voudrais faire : pouvoir tout saisir sauf les chiffres.
    Malheureusement quand j’inverse la formule if(codedigit>57|codedigit48) en if(codedigit57|codedigit>48) on ne peut plus rien saisir du tout dans le champ.
    :Euuuh:

    #60467
    alex
    Participant

    POur interdire la saisie des chiffres….
    Un peu de logique combinatoire:
    Onglet Format: script de touches personnalisé:

    saisie=this.event.change;
    codedigit=saisie.charCodeAt(0);
        if(codedigit<57&codedigit>48)
        {
        this.event.change=””;
        app.beep(0);
        }

    #60468
    Merlin
    Maître des clés

    Un peu de logique combinatoire:

    saisie=this.event.change;
    codedigit=saisie.charCodeAt(0);
        if(codedigit<57&codedigit>48)
        {
        this.event.change=””;
        app.beep(0);
        }

    Mais bon sang, mais c’est bien sur !  :oh:
    Inverser les “Merci.  :bravo:

    Question subsidiaire : quelle est la différence entre & et &&, et entre | et || ?
    Que j’en mette un ou deux j’obtiens toujours le même comportement, mais j’imagine qu’il doit y avoir une petite différence quelque part ?

    #60469
    alex
    Participant

    Le & est destiné à la manipulation des nombres binaires:
    exemple avec les nombres 3 et 9 en binaire:
    3 & 9
    3 = 0 0 1 1 en binaire
    9 = 1 0 0 1 en binaire
    L’opérateur donne 1 car:
    . 0 0 1 1
    & 1 0 0 1



      0 0 0 1

    && est le ET de la logique combinatoire
    (condition1 && condition2)
    vaut true si les 2 conditions sont vraies(true en JS), false sinon.

    Conclusion: j’aurais du, en toute rigueur choisir &&

    #60470
    Merlin
    Maître des clés

    Merci.
    :bonjour:

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