Donnez vie à vos documents numériques !
 

Décocher et verrouiller une case

abracadabraPDF Forums PDF – Général Décocher et verrouiller une case

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46289
    nico138
    Membre

    Bonsoir à tous,

    Je réalise mon premier formulaire (pour le travail) sur indesign pour la mise en page et la création des boutons et j’écris ensuite tous les scripts sur Acrobat XI pro (window 10).
    Pour l’instant j’arrive à faire pas mal de chose principalement grace à ce forum qui m’a apporté pas mal de réponses.

    La je bloque sur une fonction qui pourtant me paraissait simple à première vue :
    J’ai 2 cases à cocher, la seconde ne s’active que si la première à été cochée (jusque la c’est bon)
    Si je décoche la première la seconde doit se verrouiller et se décocher.

    Le problème c’est qu’elle ne se décoche pas automatiquement, je dois le faire manuellement et une fois décochée elle se verrouille à nouveau.
    Et comme un problème n’arrive jamais seul, cette seconde case se trouve sur un page qui est destinée à être dupliqué, donc le nom du champs n’est jamais le même.

    Je ne trouve pas ce qui bloque, normalement la dernière ligne devrait remettre la seconde case à l’état d’origine.

    Merci d’avance pour vos réponses

    Code:
    var case1 = this.getField(“approbation”);
    var case2 = event.target;

    if (case1.isBoxChecked(0))
      {
      case2.readonly=false;
      }
    else
      {
      case2.readonly=true;
      event.target.checkThisBox(0,false);
      }

Affichage de 21 réponses de 1 à 21 (sur un total de 21)
  • Auteur
    Réponses
  • #67392
    nico138
    Membre

    Je ne sais pas ce qui c’est passé hier soir, si c’était l’heure tardive qui me jouait des tours et si il y a des choses mystèrieuses dans les scripts mais les lignes de code que j’ai posté hier soir qui fonctionnaient à peu prêt ne fonctionne plus du tout ce matin…

    Merci d’avance pour vos solutions

    #67393
    bebarth
    Maître des clés

    bonjour,
    Tu te mélanges dans les cases à cocher…
    Elles n’ont pas de propriété de calcul, juste des actions, donc lorsque tu écris “var case2 = event.target;” cela signifie que tu cliques sur la case 2 et donc :
    “case2.readonly=true;” -> tu la bloques en écriture
    “event.target.checkThisBox(0,false);” -> (qui est également la case2) tu la décoches, ce que tu déjà fait en cliquant sur cette case.

    En admettant que tu cliques sur la case1 pour bloquer/débloquer la case2, il faut écrire en script d’action souris relâchée de la case1 :

    Code:
    if (event.target.value!=”Off”) {
    this.getField(“Case2”).readonly=false
    } else {
    this.getField(“Case2″).value=”Off”;
    this.getField(“Case2”).readonly=true;
    }

    @+
    :bonjour:

    #67394
    nico138
    Membre

    Bonjour bebarth et merci de ta reponse.

    Le souci c’est que la case2 se trouve sur une page que je duplique et ou le champs doit se renommer automatiquement.

    Du coup j’ai un peu modifier ton script pour pouvoir l’affecter à une case avec un nom variable en prenant comme condition la case1 :

    Code:

    if (this.getField(“case1″)!=”Off”) {
    event.target.readonly=false
    } else {
    event.target.value=”Off”;
    event.target.readonly=true;
    }

    Cela fonctionne plutôt bien :
    la case2 est bien verouillée tant que la case1 n’est pas cochée
    la case2 est bien décochée quand la case1 est décochée
    par contre la case2 ne revient pas en lecture seule comme elle devrait quand la case1 est décochée

    #67395
    bebarth
    Maître des clés

    Le souci c’est que la case2 se trouve sur une page que je duplique et ou le champs doit se renommer automatiquement.

    Tu dupliques une page modèle ? Si oui il y a moyen à ce que les champs ne soient pas renommés !

    Du coup j’ai un peu modifier ton script pour pouvoir l’affecter à une case avec un nom variable en prenant comme condition la case1 :

    Si l’évènement correspond à la case que tu coches, comment peux-tu recliquer sur une case après l’avoir mise en lecture seule avec event.target.readonly=true ???

    @+
    :bonjour:

    #67396
    Merlin
    Maître des clés

    Bonjour

    Je réalise mon premier formulaire (pour le travail) sur indesign pour la mise en page et la création des boutons et j’écris ensuite tous les scripts sur Acrobat XI pro (windows 10).

    InDesign c’est bien pour faire une ou deux page(s) PDF avec juste quelques champs pour recueillir des coordonnées sans aucun formatage, mais dès qu’on veut aller un peu plus loin le mieux est de ne faire que les fonds de page avec InDesign, et le reste avec Acrobat Pro.
    Au final on gagne un temps fou.
    :Smiley03:

    #67397
    nico138
    Membre

    Bonjour,

    J’ai besoin que les champs de la page modèle changent de nom quand je duplique la page pour permettre de les remplir avec des données différentes.

    Par contre sur la première page du formulaire on trouve la case1.

    Si cette case1 n’est pas cochée, la case2 (qui change de nom lorsque la page est dupliquée à partir d’une page modèle) doit être en lecture seule pour éviter toute erreur de la part de l’utilisateur.
    Si la case1 est cochée, la case2 n’est plus en lecture seule et l’utilisateur peut decider de la cocher ou non.
    Si l’utilisateur à fait une erreure et revient en arrière et qu’il décoche la case1, la case2 doit être décochée (dans l’éventualité ou l’utilisateur l’a deja cochée) et revenir en lecture seule pour éviter qu’elle soit de nouveau cochée.

    Et pour répondre à merlin j’utilise bien indesign pour créer le fond de mon document et les différents champs et j’utilise acrobat pro pour paramétrer les champs insérer les scripts etc…

    @+

    #67398
    bebarth
    Maître des clés

    bonjour,

    J’ai besoin que les champs de la page modèle changent de nom quand je duplique la page pour permettre de les remplir avec des données différentes.

    Cela signifie que la page est dupliquée plusieurs fois ?
    Donc il y a plusieurs fois la case 2 ???
    @+
    :bonjour:

    #67399
    nico138
    Membre

    oui il y a plusieurs case2 sur plusieurs pages, et elle n’est pas forcément cochée sur toutes les pages.

    D’ou mon idée (peut être stupide..) de conditionner la case2 sur la page modèle par rapport à la case1.

    #67400
    Merlin
    Maître des clés

    Le souci c’est que la case2 se trouve sur une page que je duplique et ou le champs doit se renommer automatiquement.

    Utilises tu le paramètre bRename ?
    Voir : https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/Acro12_MasterBook/JS_API_AcroJS/Template_methods.htm?rhhlterm=spawn&rhsyns=%20

    #67401
    nico138
    Membre

    Oui j’utilise bien le paramètre bRename reglé sur true

    #67402
    bebarth
    Maître des clés

    Donc une seule case 1 qui bloque/débloque plusieurs cases 2 indépendantes, mais toujours en même temps !
    Cela nécessite un petit script. Je regarde ce soir car en ce moment je fais car wash dehors !
    Et j’ai bien choisi mon jour, c’est la première fois qu’il pleut depuis des semaines…
    @+
    :bonjour:

    #67403
    nico138
    Membre

    Merci bebath pour tes réponses.

    J’ai du apporter quelques modifications à mon document, du coup le souci est maintenant légérement différent.
    On a toujours une case1 unique.
    Une case2 sur une page modèle avec le paramètre bRename sur true.

    La case2(qui ne s’apelle jamais vraiment case2) reste toujours verouillée pour l’utilisateur et doit être cochée et décochée en cliquant sur la case1.

    En fait aucune action n’est fait directement sur la case2, du coup je m’embourbe un peu tout seul, comment appliquer un script d’action à un champs sur lequel on n’effectue pas vraiment d’action ?
    :mur:
    Je m’en suis sorti avec les zones de texte (qui sont dans la même configuration) en mettant un script de calcul mais la je bloque sérieusement sur les cases.
    L’idéal serait d’avoir bRename qui reglé sur vrai pour certains champs et false pour d’autres… mais il me semble que c’est impossible.
    :mur:

    Bon courage pour ton carwash sous la pluie !
    @+

    #67404
    Merlin
    Maître des clés

    L’idéal serait d’avoir bRename qui reglé sur vrai pour certains champs et false pour d’autres… mais il me semble que c’est impossible.

    Trop facile, mais il faut décomposer l’action et les modèles :
    1. spawn d’une page modèle A avec des champs renommés,
    2. spawn d’une page modèle B par-dessus la précédente. en utilisant le paramètre bOverlay, avec des champs non renommés.

    :Smiley03:

    #67405
    bebarth
    Maître des clés

    Dis-moi si c’est bien ce que tu veux !
    @+
    :bonjour:

    #67406
    nico138
    Membre

    Oui j’arrive à faire ce que je veux !

    Il me reste cependant un petit souci c’est la pagination…

    j’utilise : event.value = util.printf(“%d/%d”,event.target.page+1,this.numPages); (trouvé sur un autre site)

    Je le place dans un script de calcul personnalisé mais l’affichage du numéro de page ne se fait pas en temps réel quand je duplique ou supprime une page.

    #67407
    bebarth
    Maître des clés

    bonjour,
    C’est peut-être compliqué si tu ne comprends pas ce que tu écris !
    Écris plus simplement : event.value=(this.pageNum+1)+”/”+this.numPages;
    Et tu ajoutes un script d’ouverture de page sur ta page modèle : this.calculateNow();
    @+
    :bonjour:

    #67408
    nico138
    Membre

    Hello bebarth,

    Merci encore pour ta réponse.

    C’est vrai que je ne comprend pas tout les scripts que j’écris…
    A la base mon PDF devait rester relativement simple mais il devient de plus en plus complexe.

    Il me reste juste le numéro de page qui me resiste.

    Deja je ne sais pas comment mettre un script d’ouverture de page sur une page modèle.  :Ooops:
    Comment fais tu pour numéroter les pages d’origine du document ? (les 2 premières pages de ton document par exemple)  :doute:

    Merci encore
    @+

    #67409
    bebarth
    Maître des clés

    Deja je ne sais pas comment mettre un script d’ouverture de page sur une page modèle.  :Ooops:

    Lorsque ta page modèle est visible, tu la sélectionnes dans le panneau Vignettes de page, puis clique droit et “Propriétés de la page…”.
    Ensuite tu sélectionnes “Actions”, etc.
    De cette manière le calcul se fait à chaque fois que tu vas sur cette page. La numérotation des pages se met donc à jour.

    Pour indiquer le numéro de page il faut écrire (this.pageNum+1) car en JavaScript le numéro de page est basé sur 0 (la première page est la page 0).
    this.numPages correspond au nombre de pages du document.
    @+
    :bonjour:

    #67410
    nico138
    Membre

    Merci !

    Du coup je pensais que c’était fini…
    Mais évidement il reste un détail à régler.

    J’ai un champs que l’on remplie avec un numéro qui doit prendre la forme 001… 010… etc et ce numéro doit être dupliqué dans un autre champs.
    Quand je le duplique avec : this.getField(“CHAMPS”).value=event.target.value;
    La duplication fonctionne mais j’obtient 1… 10… etc les zéros du début sont systématiquement supprimés.

    Pourtant j’ai mis dans propriété du champs > format > spéciale > masque arbitraire > 999 comme vu sur ce forum (je ne retrouve plus sur quelle page)

    Quand je rentre 001 dans le premier champs j’ai un message d’erreur me disant que le format du champs ne correspond pas.

    Après grace à vous le reste du document fonctionne comme il devrait.
    Merci

    @+

    #67411
    bebarth
    Maître des clés
    #67412
    nico138
    Membre

    Merci Merci !

    Le document est enfin terminé.
    A mon avis il y a clairement moyen de l’optimiser masi l’essentiel c’est que cela fonctionne.

    Merci bebarth et Merlin pour votre aide dans cette discussion (et dans d’autres).

    @+

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