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 #45904pierremaugMembre
Bonjour,
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 #64407MerlinMaître des clés
Bonjour
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 #64408pierremaugMembreMerci 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 #64409MerlinMaî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 #64410pierremaugMembreMerci 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 #64411MerlinMaî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 #64412pierremaugMembreParfait merci beaucoup !
Est ce que c’est vous qui donnez les formations PDF ?
Je cherche une formation sur Paris.
merci30 juillet 2018 à 12:18 #64413MerlinMaî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 #64414pierremaugMembreMail envoyé merci !
30 juillet 2018 à 15:08 #64415pierremaugMembreJe 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 #64416MerlinMaî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 #64417bebarthMaî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 #64418pierremaugMembreBonjour,
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 #64419pierremaugMembreQuestion 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 #64420MerlinMaî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 #64421pierremaugMembreTout simplement.
merci Merlin.31 juillet 2018 à 13:17 #64422bebarthMaî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 #64423pierremaugMembreTrès bien. Quel est la raison ?
31 juillet 2018 à 13:49 #64424bebarthMaî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 #64425pierremaugMembreAh ok ! Effectivement c’est mieux !
Merci31 juillet 2018 à 14:20 #64426bebarthMaî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 #64427MerlinMaî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 #64428pierremaugMembreBonjour,
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 #64429pierremaugMembreApparemment 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 #64430bebarthMaî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 #64431pierremaugMembreEtourderie de ma part.
Désolé pour le dérangement et merci de votre retour.2 août 2018 à 14:15 #64432pierremaugMembreMon 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 #64433bebarthMaître des clés…pour moi les champs sont verts également !
:Euuuh: :Euuuh:2 août 2018 à 15:30 #64434pierremaugMembreHummm,
Petite avancé : Avec adobe acrobat DC : ca ne marche
avec adobe re2 août 2018 à 15:32 #64435pierremaugMembredésolé :
Avec adobe acrobat DC : ca ne marche pas
Avec adobe reader : ca marche2 août 2018 à 20:48 #64436MerlinMaî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 #64437bebarthMaî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 #64438MerlinMaître des clésOui, en tout cas la surbrillance masque la couleur des champs.
3 août 2018 à 08:28 #64439pierremaugMembreEffectivement ça fonctionne ! Merci !
Une explication sur ces problèmes de “compatibilité” entre version d’acrobat ?4 août 2018 à 11:34 #64440MerlinMaî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.