Donnez vie à vos documents numériques !
 

Résultat sous conditions entre valeurs. – RÉSOLU

abracadabraPDF Forums PDF – Général Résultat sous conditions entre valeurs. – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44694
    Alexandre
    Membre

    Bonjour,

    Voici le script que je mets dans mon formulaire, sauf qu’il me dit que j’ai un SyntaxError: unterminated string literal 3: à la ligne 4.

    var a = this.getField(« Total »).value;
    if ( a > ’36’ ) event.target.value = « DPS de grande envergure »;
      else if ( a > ’12’ || a   else if ( a > ‘1.125’ || a   else if ( a > ‘0.25’ || a   else if ( a > ‘0’ || a   else if ( a == ‘0’ ) event.target.value =  » Vous devez remplir le formulaire « ;
      else event.target.value =  » Vous devez remplir le formulaire « ;

    je l’ai tourné dans tous les sens mais voilà la dernière mouture. Pour le coup je rame pour trouver la solution.
    Merci d’avance pour votre soutien

Affichage de 10 réponses de 1 à 10 (sur un total de 10)
  • Auteur
    Réponses
  • #56144
    Alexandre
    Membre

    J’avais vu ce script là, il fonctionne mais même quand le chiffre de f=1.35, il me met dans la case « Vous devez remplir le formulaire alors qu’il devrait mettre « Point d’alerte et de premier secours »
    J’avance quand même car je n’ai plus d’erreurs mais pas de résultat sur le formulaire.

    var f = this.getField(« Total »).value;
    cible= »DPS »
    texte1= »Vous devez remplir le formulaire »;
    texte2= »A la diligence de l’autorité de police compétente »;
    texte3= »Point d’alerte et de premiers secours »;
    texte4= »DPS de petite envergure »;
    texte5= » DPS de moyenne envergure « ;
    texte5= » DPS de grande envergure « ;
    if(f==0)
    {
    this.getField(cible).value=texte1;
    }
    else
    {
    this.getField(cible).value=texte1;
    }
    if(f>0)
    {
    this.getField(cible).value=texte2;
    }
    else
    {
    this.getField(cible).value=texte1;
    }
    if(f{
    this.getField(cible).value=texte2;
    }
    else
    {
    this.getField(cible).value=texte1;
    }
    if(f>0.25)
    {
    this.getField(cible).value=texte3;
    }
    else
    {
    this.getField(cible).value=texte1;
    }
    if(f{
    this.getField(cible).value=texte3;
    }
    else
    {
    this.getField(cible).value=texte1;
    }
    if(f>1.125)
    {
    this.getField(cible).value=texte4;
    }
    else
    {
    this.getField(cible).value=texte1;
    }
    if(f{
    this.getField(cible).value=texte4;
    }
    else
    {
    this.getField(cible).value=texte1;
    }
    if(f>12)
    {
    this.getField(cible).value=texte5;
    }
    else
    {
    this.getField(cible).value=texte1;
    }
    if(f{
    this.getField(cible).value=texte5;
    }
    else
    {
    this.getField(cible).value=texte1;
    }
    if(f>36)
    {
    this.getField(cible).value=texte6;
    }
    else
    {
    this.getField(cible).value=texte1;
    }

    #56145
    Merlin
    Maître des clés

    je l’ai tourné dans tous les sens mais voilà la dernière mouture. Pour le coup je rame pour trouver la solution.
    Merci d’avance pour votre soutien

    Bonjour et bienvenue sur le forum,

    A première vue il manque un guillemet avant le « 36 » sur la ligne 3 :

      else if ( a > ’12’ || a ‘36′ ) event.target.value = « DPS de moyenne envergure » ;

    :Smiley15:

    #56146
    Alexandre
    Membre

    Merci Merlin pour ta réponse, mais à force de regarder toutes ces lignes, tu ne vois le petit détail.

    Je n’ai plus de problème de syntaxe mais par contre la réponse dans le champ « dps » reste « DPS de moyenne envergure » quoi que ce soit comme chiffre dans le champ « Total ». J’ai l’impression que vu que « Total »>36 il ne prends que le premier else if alors que a=0.2, les autres else if ne sont pas pris en compte. Il faudrait un else if de else if en cascade, il faudrait le marquer comment pour que cela fonctionne.

    var a = this.getField(« Total »).value;
    var s = this.getField(« dps »).value;
    if ( a > ’36’ ) s = « DPS de grande envergure »;
      else if ( a > ’12’ || a   else if ( a > ‘1.125’ || a   else if ( a > ‘0.25’ || a   else if ( a > ‘0’ || a   else if ( a == ‘0’ ) s =  » Vous devez remplir le formulaire « ;
      else s =  » Vous devez remplir le formulaire « ;

    En tout cas, ton forum Merlin est une mine d’or, je comprends plus rapidement les scripts qu’en passant par des tutos.

    #56147
    Merlin
    Maître des clés

    Merci Merlin pour ta réponse, mais à force de regarder toutes ces lignes, tu ne vois le petit détail.

    D’où l’intérêt d’utiliser un éditeur comme TextWrangler qui colorise la syntaxe : ça saute aux yeux.
    :Smiley03:

    Pour le reste je crois que c’est surtout l’ordre qui pose problème, il faut tester en partant de la condition la plus restrictive en allant vers la plus large, alors que ton script fait l’inverse.
    Donc commencer par tester le zéro, pour finir par tester > 36.
    :Smiley01:

    #56148
    Alexandre
    Membre

    var t = this.getField(« Total »).value;
    var s = this.getField(« dps »).value;
    if ( t == ‘0’ ) s =  » Vous devez remplir le formulaire « ;
    else if ( t > ‘0’ || a else if ( t > ‘0.25’ || a else if ( t > ‘1.125’ || a else if ( t > ’12’ || a else if ( t > ’36’ ) s = « DPS de grande envergure »;

    Je l’ai ai remis dans le sens du 0 en premier et du 36 en dernier et donc avec une valeur t=10 j’ai « Vous devez remplir le formulaire » qui s’affiche au lieu de « DPS de petite envergure avec minimum 4 secouristes ».
    Alors à la place de ou, j’ai mis et, et cela ne marche pas pour autant.
    Est ce qu’il faut rajouter quelque chose à ce script pour changer l’affichage dans le champs ou bien il faut mettre un autre script en place?

    #56149
    Merlin
    Maître des clés

    Mais ce « a » qui est après le ||, à quoi sert-il ?
    :Smiley03:

    #56150
    Alexandre
    Membre

    Il ne sert à rien vu que le copier coller que j’ai fait était l’avant dernier.
    Le bon script a bien un « t » à la place du « a » comme ci-dessous:

    var t = this.getField(« Total »).value;
    var s = this.getField(« dps »).value;
    if ( t == ‘0’ ) s =  » Vous devez remplir le formulaire « ;
    else if ( t > ‘0’ ||  telse if ( t > ‘0.25’ ||  telse if ( t > ‘1.125’ ||  telse if ( t > ’12’ || telse if ( t > ’36’ ) s = « DPS de grande envergure »;

    Mais cela ne donne toujours rien, je vous joins donc le script sur une feuille. Il n’ y a plus rien qui s’affiche.

    [attachment deleted by admin]

    #56151
    Merlin
    Maître des clés

    Euuhhh…
    Là je donne ma langue au chat.
    :mur:

    J’y reviendrais plus tard.

    #56152
    Alexandre
    Membre

    En tout cas, merci Merlin de te  :mur: dessus, moi j’en deviens  :geek: à force.

    On va y arriver à force de tourner le script dans tous les sens.

    #56153
    Alexandre
    Membre

    :soleil:

    Et donc voilà la solution, le script ne sait pas reconnaitre les valeurs comprises.
    Il fonctionne par élimination plus on monte vers le haut.

    Le script:

    var a = this.getField(« Total »).value;
    if (a == « 0 ») {event.target.value = «  »};
    if (a > « 0 ») {event.target.value = « A la diligence de l’autorité compétente »};
    if (a > « 0.25 ») {event.target.value = « Point d’alerte et de premier secours »};
    if (a > « 1.125 ») {event.target.value = « DPS de petite envergure avec 4 secoursites minimum »};
    if (a > « 12 ») {event.target.value = « DPS de moyenne envergure »};
    if (a > « 36 ») {event.target.value = « DPS de grande envergure »};

    En tout cas, merci à Merlin pour son aiguillage.

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