Changement de couleur dans champ  (Lu 458 fois) Partager ce sujet Imprimer

1 B


Alain  02 juin 2021 : 16:04

Bonjour
Je suis débutant, et je bute sur un codage, je m'explique : dans un formulaire je souhaiterais un changement de couleur suivant un texte.
Dans mon champ texte "A" sur lequel je peux saisir des valeurs, je saisie une valeur entre 0 et 4.4 la valeur se traduit "Normal" dans le champ "B" ou entre 4.5 et 7 la valeur se traduit "Alerte" dans le champ "B" ou entre 7 et 50 la valeur se traduit "Danger" dans le champ "B" => jusque là ça marche....
 Je souhaite que la couleur du champ B change on fonction des critères « Normal » ou « Alerte » ou « Danger »
« Normal » couleur verte
« Alerte » couleur orange   
« Danger » couleur rouge
Code du champ "A"

var champA = event.value;
if (champA >= 0 && champA <= 4.4) {this.getField("B").value = "Normal";}
else if(champA >= 4.5 && champA <= 7) {this.getField("B").value = "Alerte";}
else if(champA >= 7.1 && champA <= 50) {this.getField("B").value = "Danger";}
Merci

IP archivée


Merlin  03 juin 2021 : 10:15

Bonjour et bienvenue


Voilà presque le même script, le orange n'existe pas en "couleur nommée" c'est pourquoi il faut le déclarer en utilisant des valeurs RVB :

var cSaisie = event.value;
var oChampB = this.getField("B");

if (cSaisie >= 0 && cSaisie <= 4.4) {
oChampB.value = "Normal";
oChampB.fillColor = color.green;
}
else if(cSaisie >= 4.5 && cSaisie <= 7) {
oChampB.value = "Alerte";
oChampB.fillColor = ["RGB", 255/255, 128/255, 0/255]; // orange
}
else if(cSaisie >= 7.1 && cSaisie <= 50) {
oChampB.value = "Danger";
oChampB.fillColor = color.red;
}

IP archivée


Alain  03 juin 2021 : 11:04

Bonjour Merlin et MERCI pour votre réponse, cela m'a bien aidée et permis d’accroitre mes connaissances sur java script  :bravo: :bravo: :bravo: Toutefois un petit soucis, le codage fonctionne très bien sur mon PC Windows, mais quand je transfère le formulaire sur une tablette Android le changement de couleur ne fonctionne plus, c'est le plus grand intérêt du formulaire.
Une solution?
Encore Merci  :Smiley01:

IP archivée


Merlin  03 juin 2021 : 13:58

Quelle app utilises tu sur Android ?
Acrobat Mobile ou autre ?

IP archivée


Alain  03 juin 2021 : 14:35

J'utilise Xodo

IP archivée


Merlin  03 juin 2021 : 19:26

Sur Android les meilleures apps pour exploiter des formulaires PDF sont Acrobat Mobile, qPDF Reader et ezPDF Reader.

IP archivée


jctremblay  03 juin 2021 : 23:13


Merlin, si je veux utiliser ce script mais dans un script de document pour pouvoir appeler la fonction et le nom du champs avec un "Mouse Up", que dois-je faire.
J'ai essayer de mettre le code comme ceci au début:


function color(champ)
{
var cSaisie = event.value;
var oChampB = this.getField(champ);
...


Et ceci dans le champ:


color("nom du champ");


La console me donne toujours ceci quand je modifie le contenu du champ texte.


InvalidSetError: Propriété Set impossible, incorrecte ou inconnue.
Field.fillColor:9:AcroForm:champ_text:Annot1:MouseExit:Action1


Que faire pour inclure comme variable dans la fonction un champ de texte modifiable facilement selon les besoins dans les champs?

IP archivée


bebarth  04 juin 2021 : 09:29

bonjour,
Tu ne peux pas utiliser event.value en script de document. event.value ne s'applique qu'a un champ bien défini.
Pour ton exemple, j'utiliserais plutôt en script de document :
function color(cSaisie,oChampB) {
...
// Tu utilises cSaisie et oChampB comme variables dans ton script
...
}

...et pour appeler la fonction :
color(event.value,this.getField(champ));
A part cela, je ne suis pas certain que tu puisses utiliser color comme nom de fonction (à vérifier). color est le nom d'un objet comme je te l'ai expliqué dans un autre post.
Je me souviens d'un post ou j'avais "découvert" qu'on ne peut pas utiliser "position" comme nom de variable. Il y a des mots réservés au javaScript et pourtant "position" n'en fait pas partie :
https://www.w3schools.com/js/js_reserved.asp
@+
 :bonjour:

IP archivée


jctremblay  04 juin 2021 : 16:58


Merci Bebarth!
J’ai du changer le nom de la fonction et aussi mettre le nom du champ avec des " ".
warning_states(event.value,this.getField("box_a"));
J'ai fait des test avec mon code en:
a) action avec le champ désactivé;
b) validation script;
c) executé avec un bouton.


Je joint mon document test pour les curieux.
PS: Pour ce genre d’appel de function, quel est la meilleur endroit ou mettre le code? Validate, Calcule, Action? J’ai vu que le code ne s’exécute pas toujours correctement en action sur les champs (souris relâcher entre autre).

IP archivée


bebarth  04 juin 2021 : 17:49

J’ai du changer le nom de la fonction et aussi mettre le nom du champ avec des " ".
Si tu indiques le nom du champ c'est normal vu que c'est une chaine de caractères. Dans le script que je t'ai donné, je pensais que "champ" était une variable !

PS: Pour ce genre d’appel de function, quel est la meilleur endroit ou mettre le code? Validate, Calcule, Action? J’ai vu que le code ne s’exécute pas toujours correctement en action sur les champs (souris relâcher entre autre).
En fait, ça dépend de comment est récupérée la valeur.
Si c'est un calcul qui dépend de un ou plusieurs autres champs, il vaut mieux écrire un script de calcul.
Si c'est une valeur entrée manuellement tu écris un script de validation (ou script champ désactivé certaines fois).
Si tu préfères que le script soit exécuté à un instant bien précis, tu utilises le bouton...

@+
 :bonjour:

IP archivée


jctremblay  04 juin 2021 : 17:55

Merci!


«Je vais me coucher moins niaiseux !» Espression très québécoise.  :geek:

IP archivée


bebarth  04 juin 2021 : 19:18


IP archivée


Merlin  05 juin 2021 : 11:38

«Je vais me coucher moins niaiseux !» Espression très québécoise.
C'est toujours plus fleuri que l'expression française : "Je me coucherai moins con ce soir"
 :Smiley03:

IP archivée