Donnez vie à vos documents numériques !
 

Morceau de script depuis champ texte formulaire

abracadabraPDF Forums PDF – Général Morceau de script depuis champ texte formulaire

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

    Bonsoir,

    Est-il possible dans un script de faire appel au contenu d’un champ texte pour en récupérer le contenu et l’intégrer dans ce script ?

    Je m’explique…

    J’ai une fonction très complexe dans un fichier que je n’ai pas réalisée moi-même. Du coup, tout le reste dépend de ça, et je n’ai le temps, ni les capacités, de tout ré-encoder.

    Dans mon script en dur, la liste est similaire à la suivante :

    Code:
    ListeVoiture={marque:”RENAULT”,modele:”Clio”,vente:”1500};
    ListeVoiture={marque:”PEUGEOT”,modele:”208″,vente:”500};
    ListeVoiture={marque:”CITROEN”,modele:”C3″,vente:”800};
    ListeVoiture={marque:”TOYOTA”,modele:”Yaris”,vente:”150};
    ListeVoiture={marque:”MAZDA”,modele:”2″,vente:”80};

    etc.

    Le problème est que c’est écrit en dur dans le script, et qu’il faut aller le modifier dedans. Cela n’est pas à la portée de tout le monde, et je voudrais éviter d’avoir à refaire une nouvelle version à chaque rajout de la liste. Du coup, je me demandais s’il était possible de faire un copier-coller de cette partie du script dans un champ texte, que je rendrais accessible si besoin pour modification. Ainsi, même sur une tablette la personne pourrait modifier cette partie du script, juste dans le champ texte.

    Sinon, est-il possible de reconstruire cette liste d’après un champ composé comme dans mon précédent post ?

    RENAULT|Clio|1500
    PEUGEOT|208|500
    CITROEN|C3|800
    TOYOTA|Yaris|150
    MAZDA|2|80

Affichage de 19 réponses de 1 à 19 (sur un total de 19)
  • Auteur
    Réponses
  • #65612
    Merlin
    Maître des clés

    Bonjour.

    Oui.
    En JavaScript c’est le dernier qui a parlé qui a raison.
    Du coup, il suffit de re-déclarer la variable ListeVoiture à la suite du script existant et le tour est joué.
    :Smiley15:

    #65613
    micka92
    Membre

    Bonjour.

    Oui.
    En JavaScript c’est le dernier qui a parlé qui a raison.
    Du coup, il suffit de re-déclarer la variable ListeVoiture à la suite du script existant et le tour est joué.
    :Smiley15:

    Du coup,

    Code:
    var ListeVoiture = this.getField(“script”).value;

    ?

    #65614
    micka92
    Membre

    Du coup, j’ai ptet mal compris.

    Je déclare ma variable grâce à mon champ texte contenant mon de script ? Mais ensuite, comment je code pour qu’elle s’exécute ?

    #65615
    bebarth
    Maître des clés

    bonsoir,
    A mettre en script d’action champ désactivé :

    Code:
    var lesValeurs = this.event.target.value;
    var laChaine = lesValeurs.split(“u000D”);
    eval(laChaine[laChaine.length-1]);
    this.getField(“Marque”).value=ListeVoiture.marque;
    this.getField(“Modele”).value=ListeVoiture.modele;
    this.getField(“Vente”).value=ListeVoiture.vente;

    Par contre, pour les valeurs “vente” il y a un soucis… il doit y avoir soit 2 guillemets, soit aucun. Comme ce sont des nombre je n’en ai mis aucun dans le fichier.
    Si tu récupères les données avec un seul guillemet, il faudrait écrire quelques lignes pour le supprimer !
    @+
    :bonjour:

    #65616
    micka92
    Membre

    bonsoir,
    A mettre en script d’action champ désactivé :

    Code:
    var lesValeurs = this.event.target.value;
    var laChaine = lesValeurs.split(“u000D”);
    eval(laChaine[laChaine.length-1]);
    this.getField(“Marque”).value=ListeVoiture.marque;
    this.getField(“Modele”).value=ListeVoiture.modele;
    this.getField(“Vente”).value=ListeVoiture.vente;

    Par contre, pour les valeurs “vente” il y a un soucis… il doit y avoir soit 2 guillemets, soit aucun. Comme ce sont des nombre je n’en ai mis aucun dans le fichier.
    Si tu récupères les données avec un seul guillemet, il faudrait écrire quelques lignes pour le supprimer !
    @+
    :bonjour:

    Merci bebarth et Merlin, grâce à vous, mon formulaire touche presque à sa fin. ;)

    Il n’y a vraiment que ma partie script que j’aimerais rendre personnalisable que je n’arrive à pas mettre en oeuvre. Il est en dur sous la forme :

    Code:
    ListeVoiture[0]={marque:”RENAULT”,modele:”Clio”,vente:”1500};
    ListeVoiture[1]={marque:”PEUGEOT”,modele:”208″,vente:”500};
    ListeVoiture[2]={marque:”CITROEN”,modele:”C3″,vente:”800};
    ListeVoiture[3]={marque:”TOYOTA”,modele:”Yaris”,vente:”150};
    ListeVoiture[4]={marque:”MAZDA”,modele:”2″,vente:”80};

    La liste s’initialise à l’ouverture du PDF, les valeurs marque alimentent une liste déroulante, et les valeurs modèles et ventes des champs textes

    J’aimerais mettre dans un champ texte les variables comme ci-après :
    0|RENAULT|Clio|1500
    1|PEUGEOT|208|500
    2|CITROEN|C3|800
    3|TOYOTA|Yaris|150
    4|MAZDA|2|80

    Et donc remplacer mon script en dur par un code qui viendrait récupérer les variables dans ce champ texte tant qu’il y a des lignes plutôt que de les avoir en dur dans mon script.

    #65617
    bebarth
    Maître des clés

    bonsoir,
    Il y avait plusieurs façons d’envisager le problème. Celle que j’utilise est certainement la plus simple :

    Code:
    var lesValeurs=this.getField(“listeOriginale”).value;
    var laChaine=lesValeurs.split(“u000D”);
    var Resultat=””;
    for (var i=0; i    var laLigne=laChaine;
        var n1=laLigne.indexOf(“[“);
        var n2=laLigne.indexOf(“]={marque:””);
        var n3=laLigne.indexOf(“”,modele:””);
        var n4=laLigne.indexOf(“”,vente:””);
        var Indice=laLigne.slice(n1+1,n2);
        var Marque=laLigne.slice(n2+11,n3);
        var Modele=laLigne.slice(n3+10,n4);
        var Vente=laLigne.slice(n4+9,laLigne.length-2);
        var Resultat=Resultat+Indice+”|”+Marque+”|”+Modele+”|”+Vente;
        if (i!=laChaine.length-1) var Resultat=Resultat+”u000D”;
    }
    this.getField(“listeFinale”).value=Resultat;

    Je te laisse étudier ce script et si tu ne le comprends pas, tu demandes !
    Dans le fichier joint je t’ai mis l’action dans un bouton qui affiche le résulat si le champ est vide ou qui vide le champ s’il y a déjà un résultat…
    Je ne sais pas comment tu veux déclencher le script.
    @+
    :bonjour:

    #65618
    micka92
    Membre

    bonsoir,
    Il y avait plusieurs façons d’envisager le problème. Celle que j’utilise est certainement la plus simple :

    Code:
    var lesValeurs=this.getField(“listeOriginale”).value;
    var laChaine=lesValeurs.split(“u000D”);
    var Resultat=””;
    for (var i=0; i    var laLigne=laChaine;
        var n1=laLigne.indexOf(“[“);
        var n2=laLigne.indexOf(“]={marque:””);
        var n3=laLigne.indexOf(“”,modele:””);
        var n4=laLigne.indexOf(“”,vente:””);
        var Indice=laLigne.slice(n1+1,n2);
        var Marque=laLigne.slice(n2+11,n3);
        var Modele=laLigne.slice(n3+10,n4);
        var Vente=laLigne.slice(n4+9,laLigne.length-2);
        var Resultat=Resultat+Indice+”|”+Marque+”|”+Modele+”|”+Vente;
        if (i!=laChaine.length-1) var Resultat=Resultat+”u000D”;
    }
    this.getField(“listeFinale”).value=Resultat;

    Je te laisse étudier ce script et si tu ne le comprends pas, tu demandes !
    Dans le fichier joint je t’ai mis l’action dans un bouton qui affiche le résulat si le champ est vide ou qui vide le champ s’il y a déjà un résultat…
    Je ne sais pas comment tu veux déclencher le script.
    @+
    :bonjour:

    Super bebarth, ton script va déjà beaucoup m’aider pour retranscrire mon morceau de script qui fait une centaine de lignes vers le format que je veux, et pour plus tard aussi. :bravo:

    Par contre, du coup, comment est-ce que je peux récupérer ces données Valeur1|Valeur2|Valeur3 pour qu’elles prennent la place de ListeVoiture={marque,modele,vente} ? En gros, j’aimerais supprimer ma partie fixe de mon script, pour qu’il vienne plutôt récupérer les valeurs dans un champ texte Valeur1|Valeur2|Valeur3. Plutôt que de créer un tableau de valeur en dur dans mon script, donc non modifiable par les utilisateurs, j’aimerais pouvoir leur donner la possibilité d’initialiser eux-mêmes leur propre tableau de valeur, simplement en renseignant un champ sous la forme Valeur1|Valeur2|Valeur3 (Désolé si je ne m’exprime pas bien… :priere: )

    #65619
    micka92
    Membre

    J’ai essayé de remplacer mon script :

    Code:
    ListeVoiture[0]={marque:”RENAULT”,modele:”Clio”,vente:1500};
    ListeVoiture[1]={marque:”PEUGEOT”,modele:”208″,vente:500};
    ListeVoiture[2]={marque:”CITROEN”,modele:”C3″,vente:800};
    ListeVoiture[3]={marque:”TOYOTA”,modele:”Yaris”,vente:150};
    ListeVoiture[4]={marque:”MAZDA”,modele:”2″,vente:80};

    par

    Code:
    var lesValeurs = this.getField(“Liste”).value;
    var laChaine = lesValeurs.split(“u000D”);
    for (var i=0; i{
    var laValeur=laChaine.split(“|”);
    ListeVoiture={marque:laChaine.laValeur[0],modele:laChaine.laValeur[1],vente:laChaine.laValeur[2]}
    }

    Mais ça ne fonctionne pas.

    #65620
    bebarth
    Maître des clés

    bonjour,
    Je suis encore désolé, mais je ne comprends rien !!!
    Tu devrais poster un fichier explicatif avec ce que tu as au début, ce que tu veux à la fin et s’il y a des étapes intermédiaires.
    Dans ce post, un coup ListeVoiture possède un indice, un coup il n’y a pas… d’après ce que je comprends, un coup il y a un champ un coup il n’en faut plus…
    Est-ce qu’il faut à la fin récupérer les données dans une liste déroulante ? Où faut-il indiquer les différents éléments ? Comment et où veux-tu pouvoir rajouter des données ?
    Après, on voit ce qu’il est possible de faire ou pas !
    @+
    :bonjour:

    #65621
    Merlin
    Maître des clés

    mais je ne comprends rien !!!

    Ça me rassure parce-que moi aussi j’ai beaucoup de mal à suivre.  :Euuuh: :doute:

    #65622
    micka92
    Membre

    Bonsoir,

    Je vais essayer d’être clair. Toute la partie récupération des données dans une liste déroulante, affichage des valeurs correspondantes dans des champs texte et tout est déjà géré.

    Le seul point que j’aimerais améliorer, est le fait que mon tableau de valeurs est actuellement déclaré dans mon script en dur, donc non modifiable par le commun des mortels :

    Code:
    ListeVoiture[0]={marque:”RENAULT”,modele:”Clio”,vente:1500};
    ListeVoiture[1]={marque:”PEUGEOT”,modele:”208″,vente:500};
    ListeVoiture[2]={marque:”CITROEN”,modele:”C3″,vente:800};
    ListeVoiture[3]={marque:”TOYOTA”,modele:”Yaris”,vente:150};
    ListeVoiture[4]={marque:”MAZDA”,modele:”2″,vente:80};

    Je me demandais simplement s’il était possible de remplacer cette partie du script, par quelques lignes qui iraient chercher les données dans un champ texte de la forme :
    RENAULT|Clio|1500
    PEUGEOT|208|500
    CITROEN|C3|800
    TOYOTA|Yaris|150
    MAZDA|2|80

    En gros, il faudrait que je puisse récréer mon tableau de valeurs ListeVoiture, mais d’après un champ texte. Ainsi, si la liste évolue, elle peut être mise à jour via un simple copier-coller, par un quelconque utilisateur, sans avoir à rentrer dans le code.

    Pour des raisons de confidentialité, je ne peux pas malheureusement pas déposer de fichier ici.

    Désolé pour les incompréhensions.  :Smiley11:

    #65623
    micka92
    Membre

    Bonsoir,

    Je vais essayer d’être clair. Toute la partie récupération des données dans une liste déroulante, affichage des valeurs correspondantes dans des champs texte et tout est déjà géré.

    Le seul point que j’aimerais améliorer, est le fait que mon tableau de valeurs est actuellement déclaré dans mon script en dur, donc non modifiable par le commun des mortels :

    Code:
    ListeVoiture[0]={marque:”RENAULT”,modele:”Clio”,vente:1500};
    ListeVoiture[1]={marque:”PEUGEOT”,modele:”208″,vente:500};
    ListeVoiture[2]={marque:”CITROEN”,modele:”C3″,vente:800};
    ListeVoiture[3]={marque:”TOYOTA”,modele:”Yaris”,vente:150};
    ListeVoiture[4]={marque:”MAZDA”,modele:”2″,vente:80};

    Je me demandais simplement s’il était possible de remplacer cette partie du script, par quelques lignes qui iraient chercher les données dans un champ texte de la forme :
    RENAULT|Clio|1500
    PEUGEOT|208|500
    CITROEN|C3|800
    TOYOTA|Yaris|150
    MAZDA|2|80

    En gros, il faudrait que je puisse récréer mon tableau de valeurs ListeVoiture, mais d’après un champ texte. Ainsi, si la liste évolue, elle peut être mise à jour via un simple copier-coller, par un quelconque utilisateur, sans avoir à rentrer dans le code.

    Pour des raisons de confidentialité, je ne peux pas malheureusement pas déposer de fichier ici.

    Désolé pour les incompréhensions.  :Smiley11:

    Bon, j’ai dû manquer de clarté !  :jerisjaune:

    #65624
    bebarth
    Maître des clés

    bonsoir,


    Le seul point que j’aimerais améliorer, est le fait que mon tableau de valeurs est actuellement déclaré dans mon script en dur, donc non modifiable par le commun des mortels :

    Code:
    ListeVoiture[0]={marque:”RENAULT”,modele:”Clio”,vente:1500};
    ListeVoiture[1]={marque:”PEUGEOT”,modele:”208″,vente:500};
    ListeVoiture[2]={marque:”CITROEN”,modele:”C3″,vente:800};
    ListeVoiture[3]={marque:”TOYOTA”,modele:”Yaris”,vente:150};
    ListeVoiture[4]={marque:”MAZDA”,modele:”2″,vente:80};

    Comment est généré le script et comment est-il lancé ??? Si la table est uniquement dans le script et qu’elle n’est pas affichée dans un champ, il n’est pas possible de la récupérer. Pour des raison de sécurité il n’est pas possible de modifier un script via un autre script. Par contre, on peut supprimer un script et en re-créer un autre !
    Je ne sais pas si cela répond à ta question…
    @+
    :bonjour:

    #65625
    micka92
    Membre

    bonsoir,Comment est généré le script et comment est-il lancé ??? Si la table est uniquement dans le script et qu’elle n’est pas affichée dans un champ, il n’est pas possible de la récupérer. Pour des raison de sécurité il n’est pas possible de modifier un script via un autre script. Par contre, on peut supprimer un script et en re-créer un autre !
    Je ne sais pas si cela répond à ta question…
    @+
    :bonjour:

    Le script est lancé à l’ouverture du fichier. Mon but serait de la remplacer par quelques lignes qui iraient chercher les valeurs dans un champ. En fait, sur ma précédente demande, j’ai bien compris le concept de découper des chaînes grâce au saut à la ligne, puis sur chaque chaîne de récupérer des valeurs grâce à la fonction split. Là en gros, je pense que le principe est le même, sauf que ma table ListeVoiture a ses variables qui s’appellent “marque”, “modele” et “vente”. En gros, j’essaie de récupérer avec une boucle les valeurs 0, 1 et 2 de mon champ texte, pour qu’elles prennent place dans les valeurs précitées.

    #65626
    bebarth
    Maître des clés

    bonjour,

    En gros, j’essaie de récupérer avec une boucle les valeurs 0, 1 et 2 de mon champ texte, pour qu’elles prennent place dans les valeurs précitées.

    …et tu ne peux vraiment pas partager un semblant de fichier qu’on pourrait étudier pour mieux comprendre ? parce que je pense déjà avoir répondu à ça !!!
    @+
    :bonjour:

    #65627
    Merlin
    Maître des clés

    Mon but serait de la remplacer par quelques lignes qui iraient chercher les valeurs dans un champ…

    J’ai déjà répondu à cette question :

    En JavaScript c’est le dernier qui a parlé qui a raison.
    Du coup, il suffit de re-déclarer la variable ListeVoiture à la suite du script existant et le tour est joué.

    En pratique, dans le document il faut ajouter un autre script de document*, ou ajouter à la fin de l’existant :

    Code:
    var ListeVoiture = this.getField(“NomDuChamp”).value;

    Ce qui écrasera le contenu de la première déclaration de cette variable par le contenu du champ “NomDuChamp” (éventuellement masqué).
    Champ dans lequel on a au préalable copié-collé les données depuis le tableur.

    Le reste ne devrait pas changer.
    :Smiley15:

    * Nommé de façon à ce qu’il se lance après le script original, le classement se fait dans l’ordre alpha-numérique.

    #65628
    micka92
    Membre

    bonjour,
    …et tu ne peux vraiment pas partager un semblant de fichier qu’on pourrait étudier pour mieux comprendre ? parce que je pense déjà avoir répondu à ça !!!
    @+
    :bonjour:

    En gros, j’aimerais remplacer ma partie du script où je déclare ma table par quelques lignes qui iraient chercher les valeurs dans le champ c_liste.

    #65629
    Merlin
    Maître des clés

    Exemple ci-joint.
    J’ai ajouté le script de document “zInitialisation”.
    J’y ai aussi mis l’affichage de la variable dans la Console pour que tu voies bien sous quelle forme les données se présentent.

    #65630
    micka92
    Membre

    Merci à vous deux.

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