abracadabraPDF › Forums › PDF – Général › Morceau de script depuis champ texte formulaire
- Ce sujet est vide.
-
CréateurSujet
-
10 avril 2019 à 20:44 #46049micka92Membre
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 -
CréateurSujet
-
AuteurRéponses
-
11 avril 2019 à 10:45 #65612MerlinMaî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:12 avril 2019 à 05:49 #65613micka92MembreBonjour.
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;?
12 avril 2019 à 18:06 #65614micka92MembreDu 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 ?
12 avril 2019 à 21:04 #65615bebarthMaître des clésbonsoir,
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:13 avril 2019 à 06:39 #65616micka92Membrebonsoir,
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|80Et 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.
13 avril 2019 à 20:45 #65617bebarthMaître des clésbonsoir,
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; ivar 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:14 avril 2019 à 06:44 #65618micka92Membrebonsoir,
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; ivar 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: )
14 avril 2019 à 07:43 #65619micka92MembreJ’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.
15 avril 2019 à 06:15 #65620bebarthMaître des clésbonjour,
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:15 avril 2019 à 07:53 #65621MerlinMaître des clésmais je ne comprends rien !!!
Ça me rassure parce-que moi aussi j’ai beaucoup de mal à suivre. :Euuuh: :doute:
16 avril 2019 à 20:11 #65622micka92MembreBonsoir,
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|80En 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:
18 avril 2019 à 18:57 #65623micka92MembreBonsoir,
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|80En 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:
18 avril 2019 à 20:24 #65624bebarthMaître des clésbonsoir,
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:19 avril 2019 à 13:05 #65625micka92Membrebonsoir,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.
19 avril 2019 à 13:19 #65626bebarthMaître des clésbonjour,
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:19 avril 2019 à 14:37 #65627MerlinMaître des clésMon 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.
19 avril 2019 à 15:24 #65628micka92Membrebonjour,
…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.
19 avril 2019 à 17:36 #65629MerlinMaître des clésExemple 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.19 avril 2019 à 20:53 #65630micka92MembreMerci à vous deux.
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.