Donnez vie à vos documents numériques !
 

Checkbox

  • Créateur
    Sujet
  • #70107
    michel c.
    Participant

    Bonjour, j’ai un document dans lequel j’ai 156 checkbox : 3 colonnes et 52 lignes.

    Je voudrais que :

    1. Sur chaque ligne une seule checkbox soit cochée
    2. En bas de chaque colonne un champ texte indique le nombre de check box cochées par colonne.

    J’ai fait un petit script qui fonctionne que j’ai mis sur les 3 checkbox de la 1ère ligne.

    Le problème c’est que ce script comporte des différences en fonction de la case. Ce qui veut dire que je dois l’éditer plus de 150 fois pour que cela fonctionne sur toutes mes cases.

    Je me demande si on peut faire plus simple…

    Merci

    • Ce sujet a été modifié le il y a 2 années et 4 mois par michel c..
    • Ce sujet a été modifié le il y a 2 années et 4 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
Affichage de 9 réponses de 1 à 9 (sur un total de 9)
  • Auteur
    Réponses
  • #70111
    michel c.
    Participant

    Bon, j’ai fini par trouver ….

    J’ai extrait les chiffres des noms de champ et j’ai mis le même script pour toute la colonne 1 :

    var nom=event.target.name;
    var i = nom.substring(1,3);

    if (event.target.isBoxChecked(0)) {
    this.getField("E"+i).display = display.hidden;
    this.getField("V"+i).display = display.hidden

    }

    else {
    this.getField("E"+i).display = display.visible;
    this.getField("V"+i).display = display.visible
    }

    Pour la colonne 2, j’ai remplacé :

    ("E"+i) et ("V"+i) par ("L"+i) et ("V"+i)

    Pour la colonne 3, j’ai remplacé:

    ("E"+i) et ("V"+i) par ("L"+i) et ("E"+i)

    • Cette réponse a été modifiée le il y a 2 années et 4 mois par michel c..
    #70114
    Merlin
    Maître des clés

    Bonjour

     

    Est-ce que ce sont des cases à cocher indépendantes ou bien est-ce qu’elles fonctionnent avec un choix unique pour chaque ligne (comme des boutons-radio) ?

    Peux tu partager ton document ou un exemple ?

    #70117
    bebarth
    Maître des clés

    bonjour,
    Le plus simple est d’utiliser des boutons radio et de se servir des widgets pour additionner !

    @+
    😎

    #70122
    michel c.
    Participant

    Bonjour Est-ce que ce sont des cases à cocher indépendantes ou bien est-ce qu’elles fonctionnent avec un choix unique pour chaque ligne (comme des boutons-radio) ? Peux tu partager ton document ou un exemple ?

    Bonjour, il y a un choix unique pour chaque ligne.

    Dans mon premier message, le fichier est attaché, je suis le seul à le voir ?

    Je remet le fichier.

    • Cette réponse a été modifiée le il y a 2 années et 4 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
    #70129
    Merlin
    Maître des clés

    Dans mon premier message, le fichier est attaché, je suis le seul à le voir ?

    OTAN pour moi, je m’étais concentré sur le 2e message. 😵

    Ton document à l’air bien inutilement compliqué, je répondrai plus longuement demain.

    #70131
    Merlin
    Maître des clés

    Ci-joint, le script se trouve dans le champ masqué “CALCUL”.

     

    Pour que des cases à cocher fonctionnent comme des boutons-radios il faut que chaque rangée (par exemple) de cases ait le même nom et une valeur d’exportation différente, comme dans le ci-joint.

    Le script fait les totaux en fonction de la valeur d’exportation de chaque coche, s’il y en a une (valeur).

    Attachments:
    You must be logged in to view attached files.
    #70133
    Merlin
    Maître des clés

    var compt0 = 0;
    var compt1 = 0;
    var compt2 = 0;

    // Itération de tous les champs du document
    for (var i = 0; i < this.numFields; i++) {

    var oFld = this.getField(this.getNthFieldName(i));
    // si le champ est de type "checkbox" et si son nom contient "CheckBox" et si sa valeur n'est pas nulle
    if ((oFld.type == "checkbox") && (/CheckBox/.test(oFld.name)) && (oFld.value != "Off")) {

    if (oFld.value == "A") {compt0 += 1;}
    if (oFld.value == "B") {compt1 += 1;}
    if (oFld.value == "C") {compt2 += 1;}
    }
    }

    this.getField("LT").value = compt0;
    this.getField("ET").value = compt1;
    this.getField("VT").value = compt2;

    #70135
    michel c.
    Participant

    Merci beaucoup pour la réponse et pour les explications.

    Ce type de script n’est pas facile pour moi, même si je comprends le principe, il y a certaines choses qui m’échappent encore….mais je vais étudier ça en détail.

    Je reviendrai peut être pour d’autres petites questions je pense.

     

     

    #70136
    Merlin
    Maître des clés

    Je crois que le script est plus logique et plus compréhensible ainsi, j’ai changé le nom des variables :

     

    var comptA = 0;
    var comptB = 0;
    var comptC = 0;

    // Itération de tous les champs du document
    for (var i = 0; i < this.numFields; i++) {

    var oFld = this.getField(this.getNthFieldName(i));
    // si le champ est de type "checkbox" et si son nom contient "CheckBox" et si sa valeur n'est pas nulle
    if ((oFld.type == "checkbox") && (/CheckBox/.test(oFld.name)) && (oFld.value != "Off")) {

    if (oFld.value == "A") {comptA += 1;}
    if (oFld.value == "B") {comptB += 1;}
    if (oFld.value == "C") {comptC += 1;}
    }
    }

    this.getField("LT").value = comptA;
    this.getField("ET").value = comptB;
    this.getField("VT").value = comptC;

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