Donnez vie à vos documents numériques !
 

Formulaire récalcitrant !

abracadabraPDF Forums PDF – Général Formulaire récalcitrant !

  • Créateur
    Sujet
  • #72579
    eruaf
    Participant

    Bonjour  à tous,

    Je suis en charge d’organiser un rassemblement automobile sur un circuit et j’ai conçu un formulaire d’inscription que je n’arrive pas à mettre au point.

    Pourriez-vous m’aider pour les scripts de calculs SVP ?

    Je reste à votre disposition pour tout complément d’information bien entendu.

    Quelques explications pour détailler les particularités de fonctionnement :

    • La case “CARTE” permet de choisir le tarif sur le circuit (Adhérent ou Extérieur)
    • La case “SUPPL” permet de bénéficier de 70% de réduction sur les prestations de circuit sélectionnées pour l’engagement d’un second véhicule.

    Cette dernière option est cumulative avec la réduction offerte par la case “CARTE”

    Lorsque je rempli le formulaire, tout semble fonctionner correctement la première fois… mais si je veux corriger quelque chose (case CARTE ou SUPPL ou modifier les quantités), les calculs deviennent incompréhensibles !

    Je n’arrive pas à m’en sortir et le temps presse pour publier ce formulaire.

    Merci d’avance pour votre aide précieuse.

    Jean-Marie

    Attachments:
    You must be logged in to view attached files.
Affichage de 10 réponses de 1 à 10 (sur un total de 10)
  • Auteur
    Réponses
  • #72581
    Merlin
    Maître des clés

    Bonjour

     

    Je crois que le problème vient de “this.event.value”, c’est en fait une valeur/expression globale, qui n’a pas vraiment sa place dans ce calcul.

    Il faut utiliser “event.target.value” (= la valeur du champ cible de l’évènement en cours).

    Dans le script d’exemple ci-dessous, celui du champ ST1JS, j’ai aussi modifié les conditions car on peut simplifier juste en testant “defaultValue”.

     

    Ton script :

    if (this.getField("SUPPL").value !=0 && this.getField("SUPPL").value !="" && this.getField("SUPPL").value !=null) {
    this.event.value = (this.getField("ST1JS").value)*0.30
    }else{
    if (this.getField("CARTE").value >0) {
    this.event.value = (this.getField("PU1JS").value*this.getField("1JS").value)
    } else {
    this.event.value = (this.getField("PU1JSE").value*this.getField("1JS").value)
    }
    }

     

    Le script que je te propose de tester et d’adapter aux autres champs :

    if (this.getField("SUPPL").value != this.getField("SUPPL").defaulValue) {
    event.target.value = (this.getField("ST1JS").value)*0.30
    }else{
    if (this.getField("CARTE").value > 0) {
    event.target.value = (this.getField("PU1JS").value*this.getField("1JS").value)
    } else {
    event.target.value = (this.getField("PU1JSE").value*this.getField("1JS").value)
    }
    }

    #72582
    eruaf
    Participant

    Bonjour Merlin,

    J’ai bien reçu ton analyse et ta proposition et je t’en remercie beaucoup.

    J’ai donc suivi tes conseils en recopiant ton script pour le 1er choix et en l’adaptant pour les autres.

    Malheureusement, et j’en suis désolé, plus rien ne fonctionne dans la partie circuit !

    Plus aucun calcul n’est effectué.

    Je ne suis pas doué pour les scripts en langage Java.

    Je vais donc attendre ton retour car j’ai atteint mes limites.

    PS : mon fichier est libre d’accès. S’il peut servir de base à quelqu’un, il n’y a pas de problème.

    Merci pour ton implication,

    JM

    #72583
    bebarth
    Maître des clés

    bonjour,
    Il faut modifier l’ordre de calcul des champs.
    Voici un des scripts :
    if (this.getField("CARTE").value=="") var total=this.getField("1JS").value*this.getField("PU1JSE").value;
    else var total=this.getField("1JS").value*this.getField("PU1JS").value;
    if (this.getField("SUPPL").value=="") event.value=total;
    else event.value=total*0.3;
    Ici on peut indiquer n’importe quoi en numéro de carte et pour la réduction supplémentaire !
    On pourrait peut-être ajouter une expression régulière afin de vérifier si c’est bien un numéro de carte correct…

    Désolé pour ne pas t’avoir répondu directement sur ta boite mail, j’ai encore été très occupé ces derniers jours.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #72594
    eruaf
    Participant

    Merci beaucoup Bebarth.

    J’ai utilisé ton script pour l’option 1er jour en statique et adapté celui-ci pour les 3 autres options.

    TOUT fonctionne correctement comme je le souhaitais. Tu es le SAUVEUR !

    Concernant ta suggestion pour la “carte” et la case “suppl.”, ça ne posera pas de problème car c’est moi qui réceptionne ces formulaires remplis, donc je pourrai contrôler …

    Merci beaucoup pour ton implication sans faille.

    Très cordialement,

    JM

    #72595
    destylast
    Participant

    Voici une petite modification de ton formulaire sur le champ Email ou j’ai rajouté un script pour demander une adresse valide et j’ai modifié tes champs “niveau circuit” pour un remplissage plus simple, ton formulaire reste sympathique et je valide à 100%.

    Attachments:
    You must be logged in to view attached files.
    #72597
    eruaf
    Participant

    Woah, on n’arrête plus le progrès !

    Merci pour ta contribution bien sympathique Destylast.

    Ca va encore améliorer ce formulaire et nos adhérents apprécieront également.

    C’est chouette un forum où l’on s’entraide ! Ca change de la société dans laquelle on vit actuellement…

    #72598
    bebarth
    Maître des clés
    bonjour,

    TOUT fonctionne correctement comme je le souhaitais

    Une petite précision : lorsqu’on utilise “event” dans un script, ce n’est pas la peine de le faire précéder par “this”.
    “event” ne s’utilise que dans le document actif et “this” indique que c’est pour le document actif ! C’est donc redondant…

    @+
    😎

    #72599
    bebarth
    Maître des clés

    Voici une petite modification de ton formulaire sur le champ Email ou j’ai rajouté un script pour demander une adresse valide

    L’expression régulière que tu utilises vérifies vraiment que le minimum… On peut par exemple utiliser des caractères accentués alors qu’ils ne sont pas autorisés.
    Si tu cherches sur internet tu trouveras des dizaines d’expressions régulières pour cette vérification et toutes différentes !
    Moi j’utilise celle-ci…
    /^[a-zA-Z0-9.!#$%&'*+/=?^_{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/`

    @+
    😎

    #72607
    Merlin
    Maître des clés

    Dans ECMAScript il existe une fonction spéciale pour vérifier les adresses email : CBIsValidEmail()

     

    Exemple :

    // script de validation
    if (event.value) {
    event.rc = CBIsValidEmail(event.value);
    if (!event.rc) {
    app.alert("Cette adresse email semble invalide.\nMerci de recommencer.");
    event.rc = false;
    }
    }

    #72608
    Merlin
    Maître des clés

    Sinon la requête GREP la plus simple est celle-ci :

    \S+@\S+\.\S{2,}

    Pour connaitre tous les détails sur cette requête GREP voir : https://www.abracadabrapdf.net/ressources-et-tutos/abracadabragrep/grep-pour-indesign-detecter-email/

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