abracadabraPDF › Forums › PDF – Général › Couleur d’un champ en fonction d’un choix dans une liste déroulante
- Ce sujet est vide.
-
CréateurSujet
-
30 juillet 2018 à 09:44 #45904
pierremaug
MembreBonjour,
Je pensais avoir vu ce sujet sur le forum mais impossible de le retrouver donc désolé par avance si je pose une question déjà abordée.
Je cherche donc le script qui me permet lorsque que je fais un choix dans une liste déroulante de changer la couleur d’un champ.
En d’autres termes, j’ai une liste déroulante avec :
Dispo
HSQuand je choisi “dispo” un certain nombre de champ se colorient en vert.
Quand je choisi “HS” un certain nombre de champ se colorient en rouge.Si je peux en plus ne pas permettre de saisie dans les champs lorsque que je clique sur “HS” se serait top.
Merci d’avance
-
CréateurSujet
-
AuteurRéponses
-
30 juillet 2018 à 09:57 #64407
Merlin
Maître des clésBonjour
Essaye ça en script de validation, bien entendu il faut d’abord adapter le nom du (ou des) champ ciblé :
Code:if (event.value == “Dispo”) {this.getField(“NOMduCHAMP”).fillColor = color.green;}
else if (event.value == “HS”) {this.getField(“NOMduCHAMP”).fillColor = color.red;}
else {this.getField(“NOMduCHAMP”).fillColor = color.transparent;}Attention aussi au fait que Dispo est différent de dispo, JavaScript est sensible à la casse.
30 juillet 2018 à 10:24 #64408pierremaug
MembreMerci Merlin,
Ca fonctionne effectivement. En revanche comment faire pour que la liste ne soit pas bloqué sur un choix ?
Parce que sinon c’est soit rouge soit vert à l’ouverture du PDF.D’autre part, est ce que je peux ajouter une sript qui permette d’empêcher la saisi lorsque mon choix est : HS.
Fichier en PJ.
Merci
30 juillet 2018 à 11:03 #64409Merlin
Maître des clésIl suffit d’ajouter une espace dans la liste des items de la liste pour obtenir un item neutre.
:Smiley15:Code:if (event.value == “DISPO”) {
this.getField(“texte”).fillColor = color.green;
this.getField(“texte”).readonly = false;
}
else if (event.value == “HS”) {
this.getField(“texte”).fillColor = color.red;
this.getField(“texte”).readonly = true;
}
else {
this.getField(“texte”).fillColor = color.transparent;
this.getField(“texte”).readonly = false;
}30 juillet 2018 à 11:37 #64410pierremaug
MembreMerci Merlin ! Quitte a être chiant…
Actuellement je peux remplir un champs en mode “DISPO”. Si je me rends compte que c’est “HS”
Est il possible que le texte préalablement rempli soit effacé ?
Sinon je suis obligé de re passer en mode DISPO pour pouvoir effacer le texte.C’est un détail…
Merci
30 juillet 2018 à 11:57 #64411Merlin
Maître des clésIl faut ajouter une ligne de script un peu plus complexe, avec une boucle, car la “valeur” d’un champ ne peut pas être une “propriété” commune à toute une génération de champs.
Voir : https://www.abracadabrapdf.net/?p=525
if (event.value == “DISPO”) {
this.getField(“texte”).fillColor = color.green;
this.getField(“texte”).readonly = false;
}
else if (event.value == “HS”) {
this.getField(“texte”).fillColor = color.red;
this.getField(“texte”).readonly = true;
for (var i=0; i<3; i++) {this.getField(“texte.”+i).value = “”;}
}
else {
this.getField(“texte”).fillColor = color.transparent;
this.getField(“texte”).readonly = false;
}La valeur “3” doit correspondre au nombre de champs texte.n
30 juillet 2018 à 12:13 #64412pierremaug
MembreParfait merci beaucoup !
Est ce que c’est vous qui donnez les formations PDF ?
Je cherche une formation sur Paris.
merci30 juillet 2018 à 12:18 #64413Merlin
Maître des clésOui je suis aussi formateur, mais cette conversation devrait continuer en privé : https://www.abracadabrapdf.net/contact/
:Smiley15:
30 juillet 2018 à 14:42 #64414pierremaug
MembreMail envoyé merci !
30 juillet 2018 à 15:08 #64415pierremaug
MembreJe rencontre encore un petit problème…
J’ai ajouté l’élément “inconnu” dans ma liste déroulante et lorsque je le sélectionne il est censé coloré en orange des champs de texte. Sauf que rien ne se passe.
Ai je commis une erreur ? Fichier en PJ
MerciD’autre par, il est possible via “exécuter une commande de menu” de créer un bouton “enregistrer sous”.
Est-il possible d’avoir un bouton qui fasse juste “enregistrer” ? Et partant du principe qu’il enregistre à l’endroit où le fichier a été ouvert.Merci
30 juillet 2018 à 15:29 #64416Merlin
Maître des clésAi je commis une erreur ?
Il faut remplacer :
else if (event.value == “INCONNU”) {
this.getField(“VOIE8”).fillColor = [“RGB”,(0/255),(139/255),(203/255)];Par :
else if (event.value == “INCONNU”) {
this.getField(“VOIE8”).fillColor = [“RGB”,(1/255),(139/255),(203/255)];Est-il possible d’avoir un bouton qui fasse juste “enregistrer” ?
Seulement via un script d’application, sécurité oblige.
Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/31 juillet 2018 à 08:11 #64417bebarth
Maître des clésbonjour,
Seulement via un script d’application, sécurité oblige.
…et si cela t’intéresses, tu peux consulter les posts :
https://abracadabrapdf.net/forum/index.php/topic,3450.msg20546.html#msg20546
et
https://abracadabrapdf.net/forum/index.php/topic,3086.msg20164.html#msg20164
ou demander sur le forum !!! Mais sur le mois d’août ça va être compliqué je crois…
@+
:bonjour:31 juillet 2018 à 08:23 #64418pierremaug
MembreBonjour,
Merci Merlin et Bebarth !
Je vais creuser pour le script d’application mais à mon avis, ça s’annonce compliqué dans la mesure ou le formulaire sera sur un serveur et donc utilisé par beaucoup de personnes.Merci en tout cas !
31 juillet 2018 à 08:43 #64419pierremaug
MembreQuestion de curiosité :
Son mon fichier en PJ, l’état de la voie (liste déroulante) permet de choisir entre HS ou DISPO.
Si on choisi HS, en plus de passer deux champs en rouge, cela interdit la saisi de texte dans les champs.
Jusque là ca fonctionne très bien.En revanche, lorsque je change l’état de la rame (liste déroulante) en “DISPO” “HS” ou “INCONNU” je peux à nouveau remplir du texte dans les champs.
Pourquoi ce que ma fonction qui empêche la saisi n’est plus fonctionnel lorsque je change l’état de la rame ?
Merci
31 juillet 2018 à 08:57 #64420Merlin
Maître des clésC’est cette ligne qui commande le dé/verrouillage des champs :
this.getField(“VOIE8”).readonly = true; // verrouillage
ou
this.getField(“VOIE8”).readonly = false; // déverrouillage
31 juillet 2018 à 09:06 #64421pierremaug
MembreTout simplement.
merci Merlin.31 juillet 2018 à 13:17 #64422bebarth
Maître des clés…si je peux me permettre de te donner un conseil, tu devrais cocher la case “Valider la valeur sélectionnée immédiatement” de tes listes déroulantes.
@+
:bonjour:31 juillet 2018 à 13:40 #64423pierremaug
MembreTrès bien. Quel est la raison ?
31 juillet 2018 à 13:49 #64424bebarth
Maître des clésDans ton fichier, par exemple, si tu coches cette case, la couleur change directement lorsque tu relâche la souris quand tu modifies la liste ETAT RAME alors que si elle n’est pas cochée, il faut attendre que ton champ soit validé (via une tabulation par exemple…).
@+
:bonjour:31 juillet 2018 à 13:58 #64425pierremaug
MembreAh ok ! Effectivement c’est mieux !
Merci31 juillet 2018 à 14:20 #64426bebarth
Maître des clésPour moi, cette case devrait être cochée par défaut.
Ça me parait tellement plus logique d’avoir immédiatement le résultat et je ne comprend pas l’intérêt qu’elle soit décochée !
@+
:bonjour:1 août 2018 à 07:25 #64427Merlin
Maître des clésC’est le poids du passé.
Cette option n’a pas toujours existé, elle est venue avec Acrobat 7 ou 8. Avant il fallait utiliser JavaScript pour obtenir une validation instantanée.1 août 2018 à 14:36 #64428pierremaug
MembreBonjour,
Le débutant est de retour…
Toujours sur le même document… Je comprends pas pourquoi je peux plus remplir mes champs de texte. Si j’ai un peu près compris la logique, grâce au script sur ma liste déroulante :
[font=verdana, arial, helvetica, sans-serif]else if (event.value == “HS”) {[/font]
[font=verdana, arial, helvetica, sans-serif] this.getField(“VOIE8”).fillColor = [“RGB”,(228/255),(31/255),(19/255)];[/font]
[font=verdana, arial, helvetica, sans-serif] this.getField(“RAME8”).readonly = true;[/font]Je permet que le choix “HS” empêche l’écriture dans les champs. En revanche le reste du temps, on devrait pouvoir écrire dedans non ?
D’autre part, j’ai l’impression que lorsque je clique sur un champ, les contours disparaissent. Une fausse manip’ de ma part ?
Merci d’avance.1 août 2018 à 14:42 #64429pierremaug
MembreApparemment la suite de mon message n’est pas parti…
Le script me permet que le choix “HS” dans ma liste déroulante empêche le remplissage de champs de texte.
En revanche je peux plus remplir même quand “HS” n’est pas sélectionné.Une idée ?
Merci d’avance
1 août 2018 à 17:00 #64430bebarth
Maître des clésbonjour,
tu as confondu les champs RAMEx et VOIEx, par exemple :Code:this.getField(“VOIE8”).readonly = false; -> incorrectet
Code:this.getField(“RAME8”).readonly = false; -> correctde plus, ta ligne :
Code:for (var i=0; i<6; i++) {this.getField("VOIE8."+i).value = "";}provoque un message d’erreur (cf. console) car le script ne trouve pas les champs ! Peut-être sur une autre page ???
Idem pour les autres champs RAMEx.@+
:bonjour:2 août 2018 à 08:47 #64431pierremaug
MembreEtourderie de ma part.
Désolé pour le dérangement et merci de votre retour.2 août 2018 à 14:15 #64432pierremaug
MembreMon fichier est enfin terminé, merci beaucoup.
En revanche je rencontre un problème…Quand j’ouvre mon fichier sur un autre ordinateur, je choisi “DISPO” dans la liste “état de la rame” et mes champs sont censés devenir vert. Et là, il ne passe en vert que lorsque je clique dessus.
D’où peut venir le problème sachant que sur mon ordinateur tout fonctionne très bien.
Merci d’avance
PS : capture d’écran du problème et formulaire en PJ
2 août 2018 à 14:54 #64433bebarth
Maître des clés…pour moi les champs sont verts également !
:Euuuh: :Euuuh:2 août 2018 à 15:30 #64434pierremaug
MembreHummm,
Petite avancé : Avec adobe acrobat DC : ca ne marche
avec adobe re2 août 2018 à 15:32 #64435pierremaug
Membredésolé :
Avec adobe acrobat DC : ca ne marche pas
Avec adobe reader : ca marche2 août 2018 à 20:48 #64436Merlin
Maître des clésQuand j’ouvre mon fichier sur un autre ordinateur, je choisi “DISPO” dans la liste “état de la rame” et mes champs sont censés devenir vert…
Chez moi ça fonctionne bien.
La vérité est ailleurs…
:joker:3 août 2018 à 06:08 #64437bebarth
Maître des clésbonjour,
Sur mon Acrobat DC ça ne fonctionnait pas non plus.
J’ai désactivé la case “Afficher la couleur….” dans les préférences “Formulaires” et maintenant ça fonctionne.
@+
:bonjour:3 août 2018 à 08:06 #64438Merlin
Maître des clésOui, en tout cas la surbrillance masque la couleur des champs.
3 août 2018 à 08:28 #64439pierremaug
MembreEffectivement ça fonctionne ! Merci !
Une explication sur ces problèmes de “compatibilité” entre version d’acrobat ?4 août 2018 à 11:34 #64440Merlin
Maître des clésCe n’est pas un problème de compatibilité, l’activation/désactivation de la surbrillance existe dans toutes les versions ultérieures à la version 5 d’Acrobat Pro et Reader.
C’est une préférence utilisateur, mais on la modifier JavaScriptement pour un document (seulement celui qui contient le script) en utilisant un script à l’ouverture, sans que ça modifie le réglage général de l’utilisateur :
Code:app.runtimeHighlight = false; // désactiverou
Code:app.runtimeHighlight = true; // activer -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.