Donnez vie à vos documents numériques !
 

Action sur tous les champs commençant par…

abracadabraPDF Forums PDF – Général Action sur tous les champs commençant par…

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46334
    micka92
    Membre

    Bonsoir,

    J’ai besoin d’effectuer une action de type

    Code:
    this.getField(« champ »).readonly = false;

    sur tous mes champs qui commencent par la chaîne de caractère « facture ». J’ai tenté en vain de créer une boucle, d’utiliser la fonction substr() mais ça ne donne rien de bon. Je commence à avoir la tête en vrac à « coder » depuis ce matin. Si une âme charitable pouvait me prêter main forte.  :priere:

Affichage de 8 réponses de 1 à 8 (sur un total de 8)
  • Auteur
    Réponses
  • #67625
    micka92
    Membre

    A force d’abnégation et avec une tête un tant soit peu reposée, j’ai trouvé la solution à mon problème :

    Code:
    for (var i = 0; i {
    var f = this.getNthFieldName(i);
    if ((f.substring(0,7) == « facture »))
    {this.getField(f).readonly = false;}
    }
    #67626
    bebarth
    Maître des clés

    bonjour,
    Ta façon d’écrire m’a un peu perturbé dans un premier temps car la plupart du temps on utilise la lettre « f » comme variable de l’objet champ et non comme son nom… mais ça fonctionne.
    Moi j’aurais écrit :

    Code:
    for (var i=0; i    var nomChamp=this.getNthFieldName(i);
        if (nomChamp.substr(0,7)== »facture ») this.getField(nomChamp).readonly=false;
    }

    Mon avis (mais juste le mien) lorsqu’on a juste une propriété à traiter, ce n’est pas la peine de mettre l’objet en variable, mais si on en a plusieurs ça vaut le coup.
    Ici par exemple tu ne vérifie que le nom, mais si tu voulais vérifier le type de champ et la page par exemple ce serait effectivement plus simple décrire :

    Code:

    var nomChamp=this.getNthFieldName(i);
    var f=this.getField(nomChamp); // On peut également écrire directement var f=this.getField(this.getNthFieldName(i))
    if (f.name== »AZERT » && f.type== »text » && f.page==1253) …

    Mais ce n’est que mon avis !
    @+
    :bonjour:

    #67627
    Merlin
    Maître des clés

    Bonjour

    Si tu utilisais la Convention de dénomination des champs de formulaire tout serait beaucoup plus simple.
    Tu pourrais te contenter d’écrire :

    this.getField(« facture« ).readonly = false;

    pour manipuler tous les champs dont le nom commence par « facture ».

    Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/

    :Smiley15:

    #67628
    micka92
    Membre

    Merci à vous deux pour votre aide précieuse !  :bonjour:

    #67629
    micka92
    Membre

    Savez-vous s’il est possible d’écrire le code ci-après d’une autre manière ? En effet, celui-ci fonctionne bien sur PC mais pas sur tablette (PDF Expert). Je sais qu’il existe une section dédiée à la mobilité mais comme elle est peu utilisée… Mon but est simplement de savoir si ce script peut être codé différemment. Sinon, j’en déduirai que la fonction n’est pas supportée sur PDF Expert.

    Code:
    var Numero=app.response({
          cQuestion: « Indiquez ici le numero souhaite. »,
          cTitle: « Numero souhaite »,
          cLabel: « Numero souhaite : »,
          cDefault: «  »,
      });

    this.getField(« numero »).value=Numero;

    #67630
    Merlin
    Maître des clés

    Sinon, j’en déduirai que la fonction n’est pas supportée sur PDF Expert.

    Je crois qu’il ne faut pas chercher plus loin.

    Cependant, ton script utilise plusieurs fois le même mot « numero » dans 3 situations différentes :
    – nom du champ,
    – nom de la variable,
    – texte de l’alerte.
    Ce qui est toujours une très mauvaise idée.

    Je le verrais mieux ainsi :


    var nNumero = app.response({
    cQuestion: « Indiquez ici le numu00E9ro souhaitu00E9. »,
    cTitle: « Numu00E9ro souhaitu00E9 »,
    cLabel: « Numu00E9ro souhaitu00E9 : »,
    cDefault: «  »,
    });

    this.getField(« numero »).value = nNumero;

    Concernant la gestion des caractères accentués dans les alertes voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/pdf-javascript-et-unicode/

    #67631
    micka92
    Membre

    Dans mon script réel, il n’y a pas de redondance avec « numero ». C’était juste pour mon exemple. Et j’ai également supprimé les caractères spéciaux dans mon message pour voir si cela changeait quelque chose.

    #67632
    Merlin
    Maître des clés

    :bonjour:

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