Donnez vie à vos documents numériques !
 

Si champ vide = non visible et autre affichage conditionnel

abracadabraPDF Forums PDF – Général Si champ vide = non visible et autre affichage conditionnel

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46044
    Patakess
    Membre

    Bonjour, ça faisait longtemps o/
    Pour un formulaire, je cherche a afficher un champ et le rendre obligatoire si l’âge d’une case est inférieur à 18 (je me sers de l’âge du capitaine pour calculer ça).Après moult recherche et essai, j’ai fait quelque chose comme ça

    Code:
    if (event.target.value {
    this.getField(“nom”).display = display.hidden;
    this.getField(“nom”).required = false;
    }
    else {
    this.getField(“nom”).display = display.visible;
    this.getField(“nom”).required = true;
    }

    Sauf qu’un problème se pose (sinon je ne serai pas là, comme il faut s’en douter…)
    Lorsque le fichier est clean, la zone ne s’affiche pas et n’est pas obligatoire (jusque là tout va bien). MAIS si je mets une date pour que l’âge soit en dessous de 18, rien ne se passe. Par contre, si je fais ça en deux temps. Une première date, puis une autre, là ca fonctionne.

    Je sèche totalement ><. help please>Merci o/

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

    bonjour,
    Ton champ age doit être en script de calcul avec le champ en lecture seule.
    Voici une adaptation à ton fichier d’un script que j’avais écris pour une autre application.
    @+
    :bonjour:

    #65582
    Patakess
    Membre

    Bonjour
    Merci pour cette réponse. C’était “juste” ça alors ? (j’avoue que je ne sais jamais où il faut placer les scripts ^^”).
    Petite question. Il y a t’il moyen que si la case age est vide, alors le champs qui doit apparaitre (ou pas), n’apparaisse pas (et donc ne soit pas obligatoire ?) (en dehors de devoir manuellement à chaque fois remettre la case en invisible).
    Encore merci o/
    EDIT:
    Après quelques tests, je vais préciser un petit peu. Dans les faits, j’ai réussi à faire ce que je demandais au dessus. Sauf que au moment de le mélanger avec une autre condition, ça ne fonctionne plus  :doute:
    Dans le fichier joint, j’aimerai que la case nom s’affiche donc si l’âge est inférieur à 18 ans ou si la case nom2 contient quelque chose (c’est là que ça coince). J’ai essayais de faire deux scripts séparaient mais ils entraient en conflit. Et un seul, je n’y arrive pas ><. j faire l du coup si age ou case remplie mais pas les deux en m temps... encore merci d o>

    #65583
    Merlin
    Maître des clés

    j’aimerai que la case nom s’affiche donc si l’âge est inférieur à 18 ans ou si la case nom2 contient quelque chose

    Code:
    if (this.getField(“la case âge”).value // blablabla
    }
    else {
    // blablabla
    }

    Le secret c’est ||, double-barres verticales (ce ne sont pas des “i”) qui signifie “ou”, il y aussi && qui signifie “et”.
    Attention || est un “ou paresseux”, ce qui veut dire qu’il s’arrête à la première correspondance quand il y en a plusieurs.

    :Smiley15:

    #65584
    Patakess
    Membre

    Bonjour Merlin :)
    J’ai bien utilisé les || pour mon ou. Mon code est le suivant (enfin la partie qui nous intéresse, l’autre étant le code de bebarth qui fonctionne :D )

    Code:
    var nom3=this.getField(“nom2”);
    if (event.target.value==”” || nom3==”” ) {
      this.getField(“nom”).display=display.hidden;
      this.getField(“nom”).required=false;
    } else if (age<18 || isNaN(age) || nom3!="") {
        this.getField(“nom”).display=display.visible;
        this.getField(“nom”).required=true;
      } else {
        this.getField(“nom”).display=display.hidden;
        this.getField(“nom”).required=false;
      }

    Du coup je suppose que ça doit coincer à cause de l’ordre dans lequel j’ai mis tout ça ?
    J’ai également essayé comme ça, plus “direct” mais non plus :

    Code:
    if (event.target.value==”” || this.getField(“nom2″).value ==”” ) {
      this.getField(“nom”).display=display.hidden;
      this.getField(“nom”).required=false;
    } else if (age<18 || this.getField("nom2").value!="" || isNaN(age)) {
        this.getField(“nom”).display=display.visible;
        this.getField(“nom”).required=true;
      } else {
        this.getField(“nom”).display=display.hidden;
        this.getField(“nom”).required=false;
      }
    #65585
    Merlin
    Maître des clés

    1.
    var nom3 = this.getField(“nom2“);
    Évite absolument ce genre de correspondances trompeuses, il n’y a pas mieux pour s’emmêler les pinceaux et faire des erreurs.
    Je l’ai appris à mes dépends.  :Smiley11:
    Utilise plutôt : var nomDeux = this.getField(“nom2“);

    2. La logique voudrait qu’on teste d’abord la condition isNaN avant de tester la condition <18.
    Comme je disais ci-dessus c’est un “ou” paresseux qui fait les choses dans l’ordre et qui parfois ne va pas jusqu’au bout.

    3. La fonction isNaN est utilisée à l’envers : (if)is Not a Number = (si)ce n’est pas un chiffre.
    Ce que tu veux vérifier c’est que ce soit bien un chiffre, donc l’inverse : !isNaN
    Ou bien : if (isNaN(age) == false) mais c’est plus long.

    4. Trois possibilités sont testées (if, else if, else) alors que deux suffisent :

    if ((!isNaN(age) && age<18) || nom3!=””) {
    this.getField(“nom”).display = display.visible;
    this.getField(“nom”).required = true;
    }
    else {
    this.getField(“nom”).display = display.hidden;
    this.getField(“nom”).required = false;
    }

    #65586
    Patakess
    Membre

    1. Oups, en effet. C’est un fichier “crash test” j’avoue, mais autant crasher dans de bonne condition ^^”
    2 et 3 Cette partie là du code n’est pas de moi mais de bebarth.

    Code:
    if (age<18 || isNaN(age)) {
        this.getField(“nom”).display=display.hidden;
        this.getField(“nom”).required=false;
    } else {
        this.getField(“nom”).display=display.visible;
        this.getField(“nom”).required=true;
    }

    Il fonctionnait “a l’envers” de ce que je voulais, masquant le champ quand il fallait le montrer et inversement.

    4. J’ai essayé du coup le code que tu me donnes et ça ne fonctionne pas chez moi :/ La case reste toujours visible et obligatoire, quelque soit l’âge.

    #65587
    bebarth
    Maître des clés

    …comme ça ??? je n’ai plus suivi !

    Code:

    if ((age>18 || isNaN(age) || age != “”) && this.getField(“nom2”).value != “”) {
        this.getField(“nom”).display=display.hidden;
        this.getField(“nom”).required=false;
    } else {
        this.getField(“nom”).display=display.visible;
        this.getField(“nom”).required=true;
    }

    @+
    :bonjour:

    #65588
    Patakess
    Membre

    Désolé de t’avoir perdu ^^”.
    Pas tout à fait. En textuel, ca donnerait
    “Si l’âge est supérieur ou égal 18 ans ou si la case nom2 est vide ou si la case age est vide alors ne pas afficher nom et ne pas le rendre obligatoire.”
    et du coup l’autre
    ” si l’age est inférieur à 18 ou si la case nom2 est pleine, alors afficher et rendre obligatoire nom”
    J’ai beau essayé de rendre ça en code, ça bloque toujours à un endroit. C’est frustrant x)

    #65589
    Merlin
    Maître des clés

    si l’age est inférieur à 18 ou si la case nom2 est pleine

    Ce qui nous donne :

    Code:
    if ((!isNaN(age) && age<18) || this.getField("nom2").value != "Off")

    Pour les cases-à-cocher et les boutons-radio la valeur nulle c’est “Off“. Entre guillemets parce-que c’est une “string”

    Il n’y a pas besoin de définir une autre possibilité puisque dans tous les autres cas on fait l’action contraire.
    Donc un simple else suffit.

    Mais si tu partageais ton doc, une partie de ton doc, ou bien une maquette on aurait déjà fini cette discussion.
    (Transmettre un lien vers une pièce jointe, volumineuse ou non : Acrobat > menu Fichier > Envoyer le fichier > Envoyer et effectuer le suivi > Créer un lien anonyme)
    :Smiley15:

    #65590
    Patakess
    Membre

    Mais je l’ai partagé ^^” dans mon post de 9h44, juste avant ta première réponse ^^”

    Je remets le doc (avec un nom différent, vu qu’entre temps j’ai continué à faire joyeusement n’importe quoi ^^”)

    #65591
    bebarth
    Maître des clés

    …comme ça alors :

    Code:

    if (age>=18 || isNaN(age) || age==”” || this.getField(“nom2″).value==””) {
        this.getField(“nom”).display=display.hidden;
        this.getField(“nom”).required=false;
    } else {
        this.getField(“nom”).display=display.visible;
        this.getField(“nom”).required=true;
    }

    Moi je n’en suis qu’à _BB2  :geek: !
    @+
    :bonjour:

    #65592
    Patakess
    Membre

    Je sais pas pourquoi, mais ca ne fonctionne pas. Quand je reset le fichier, et qu’ensuite je tape une date qui donne un mineur, point de case apparait  :doute:

    #65593
    Merlin
    Maître des clés

    Mais je l’ai partagé ^^” dans mon post de 9h44, juste avant ta première réponse

    Tu as raison, le thème de ce forum est buggé, tout à l’heure je ne voyais aucune pièce jointe dans aucun message.
    J’avais vérifié avant de demander.  :Euuuh:

    Mais maintenant que je l’ai regardée je me sens encore plus largué sur ce sujet !
    :joker:

    #65594
    Patakess
    Membre

    Ah mince, c’est encore plus embêtant alors xD Je vais peut être enlever les pieces jointes  :geek:

    #65595
    bebarth
    Maître des clés

    bonjour,

    Je sais pas pourquoi, mais ca ne fonctionne pas. Quand je reset le fichier, et qu’ensuite je tape une date qui donne un mineur, point de case apparait  :doute:

    Quand tu “reset le fichier”, toutes les cases sont vide ??? Parce qu’ensuite, il faut quelque chose dans le champ nom2 pour que l’autre champ s’affiche… du moins c’est ce que j’avais compris.
    @+
    :bonjour:

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