Changer couleur du champ obligatoire lorsque rempli  (Lu 3443 fois) Partager ce sujet Imprimer

1 B


francoisenossent  02 février 2016 : 15:59

Bonjour,

Je cherche à changer la couleur d'un champ obligatoire dans un formulaire afin qu'il ne soit plus rouge lorsqu'il a été rempli par l'utilisateur.
Est-ce possible ?

IP archivée


Merlin  03 février 2016 : 01:14

Bonjour et bienvenue.


En fait c'est un truc d’illusionniste : la couleur rouge n'existe pas.  :geek:

Quand on voit les champs obligatoires en rouge c'est parce-que la "Mise en surbrillance des champs de formulaire" est activée.
Par défaut cela surligne les champs en bleu et ça ajoute un contour rouge aux champs obligatoires.

On peut désactiver la mise en surbrillance soit en cliquant sur l'icône située à droite dans la barre violette de la mort qui tue, quand elle apparait (en haut du formulaire), soit en allant dans les Préférences : Formulaires : Mise en surbrillance (décocher).
C'est également là qu'on peut changer les couleurs par défaut.

Quand la mise en surbrillance est désactivée on voit l'aspect réel des champs (fond et contour).
Par-contre on ne peut pas modifier le comportement de cette fonction, c'est à prendre tel quel ou à laisser.


Les bonnes nouvelles :

- pour éviter à l'utilisateur de devoir le faire et pour être certain de ce qu'il verra, on peut placer un script à l'ouverture du formulaire pour activer ou désactiver la mise en surbrillance.

- on peut ajouter un petit script de validation pour obtenir le comportement que tu souhaites (après avoir désactivé la mise en surbrillance).

J'ai cru lire quelque part que tu avais des compétences en copier-coller, ajouter un script n'en demande pas tellement plus.
 :Smiley15:

IP archivée


francoisenossent  03 février 2016 : 16:03

Merci, je suis bienheureuse de vous avoir trouvés  :extra:

Donc, si je comprends bien, je triche :
  • je désactive la surbrillance par un script à l'ouverture
  • je donne réellement un contour rouge à mes champs obligatoires
  • j'ajoute un script de validation qui fait changer ce contour en vert
Mes compétences en copier-coller sont effectivement infinies  :Smiley03:

Mais je vais en premier lieu vérifier avec l'utilisatrice finale que la surbrillance ne lui est pas indispensable, on ne sait jamais.
Merci en tout cas et sans doute à bientôt

IP archivée


robinmaaax  22 mars 2021 : 10:08

Bonjour, je me permets relancer ce sujet car je rencontre le même problème. je voudrais que les champs obligatoires non remplis soient automatiquement visibles après clic sur le bouton d'envoi du formulaire. Auriez vous une solution ou script type dont je pourrais m'inspirer?
Merci d'avance.

IP archivée


Merlin  22 mars 2021 : 17:51

Avec ou sans la surbrillance ?

IP archivée


robinmaaax  22 mars 2021 : 18:14

Avec la surbrillance je crois.
En fait je voudrais que seuls les champs obligatoires non remplis du formulaire soient en surbrillance (de couleur rouge par exemple) après clic sur le bouton d'envoi. Sachant que je désactive déjà la surbrillance dès l'ouverture du fichier avec :
app.runtimeHighlight = false;
 :doute:

IP archivée


Merlin  23 mars 2021 : 11:35

Citer
Avec la surbrillance je crois.…
Sachant que je désactive déjà la surbrillance dès l'ouverture du fichier…
:Euuuh:  :doute:
Dans ce cas on va plutôt essayer de faire sans.  :geek:

Ce forum ne permet pas de poster des résultats de recherche, tu devrais y faire une recherche ("RECHERCHER" ci-dessus) sur : "obligatoire champ rouge" et sur "validation champ obligatoire", c'est un sujet qui a déjà été abordé plusieurs fois.
N'hésites pas à revenir avec des questions si tu n'y arrives pas.

IP archivée


robinmaaax  25 mars 2021 : 09:54

:Euuuh: :doute:
Dans ce cas on va plutôt essayer de faire sans.  :geek:

Ce forum ne permet pas de poster des résultats de recherche, tu devrais y faire une recherche ("RECHERCHER" ci-dessus) sur : "obligatoire champ rouge" et sur "validation champ obligatoire", c'est un sujet qui a déjà été abordé plusieurs fois.
N'hésites pas à revenir avec des questions si tu n'y arrives pas.


J'ai réussi à le faire en suivant les étapes sur le sujet suivant http://abracadabrapdf.net/forum/index.php/topic,1683.msg8350.html#msg8350
Cependant je bute sur mon Champ "Téléphone". Mon champ téléphone fonctionne déjà avec un masque arbitraire dans l'onglet format. Et je n'ai plus la possibilité d'y rajouter du code JavaScript. Du coup je suis face a un choix.
C'est possible d'avoir un script de validation ou de calcul qui pourrait gérer la conformité des numéros de téléphone ( 09 99 99 99 99) ? Je ne sais vraiment pas comment coder ça. :oh:
[size=78%] [/size]
 Merci d'avance.


IP archivée


bebarth  25 mars 2021 : 12:41

bonjour,
Il faut écrire une expression régulière.
En voici une pour les numéros de téléphones (10 chiffres dont le premier est un zéro) :
if(!event.willCommit) {
    if(/^\d{2}$/.test(event.value) && event.selStart==2 && event.change!="") event.change=" "+event.change;
    else if(/^\d{2} \d{2}$/.test(event.value) && event.selStart==5) event.change=" "+event.change;
    else if(/^\d{2} \d{2} \d{2}$/.test(event.value) && event.selStart==8) event.change=" "+event.change;
    else if(/^\d{2} \d{2} \d{2} \d{2}$/.test(event.value) && event.selStart==11) event.change=" "+event.change;
    var aTester=event.value.split("");
    aTester.splice(event.selStart, event.selEnd-event.selStart, event.change);
    var testeChaine=aTester.join("");
    var modeleRegEx=/^([0]\d{0,1}( \d{0,2}( \d{0,2}( \d{0,2})?( \d{0,2})?)?)?)?$/;
    if (modeleRegEx.test(testeChaine) && event.change!="") var derniereEntree=event.change;
    event.rc=modeleRegEx.test(testeChaine);
} else {
    var modeleRegEx=/^(\d{2} \d{2} \d{2} \d{2} \d{2})?$/;
    event.rc=(event.value=="") || modeleRegEx.test(event.value);
}
@+
 :bonjour:

IP archivée


Merlin  25 mars 2021 : 18:46

Cependant je bute sur mon Champ "Téléphone". Mon champ téléphone fonctionne déjà avec un masque arbitraire dans l'onglet format. Et je n'ai plus la possibilité d'y rajouter du code JavaScript
Le script de vérification des champs obligatoire devrait se trouver dans le bouton "Valider" (ou Envoyer, etc.).
Que veux tu mettre en Validation dans ce champ téléphone ?

IP archivée


robinmaaax  26 mars 2021 : 08:57

Le script de vérification des champs obligatoire devrait se trouver dans le bouton "Valider" (ou Envoyer, etc.).
Que veux tu mettre en Validation dans ce champ téléphone ?


Je crois que je me prenais vraiment la tête pour rien, grâce au tuto sur les déférents niveaux de javascript que tu m'as passé sur l'autre sujet, je me suis rendu compte que je pouvais bien mettre le script de validation des champs obligatoires dans la partir " Script de Calcul personnalité" et maintenir mon masque arbitraire, et ca fonctionne biiien !


Merci beaucoup :bonjour:

IP archivée


Merlin  26 mars 2021 : 12:55

Je ne comprend toujours pas ce qu'un script de vérification des champs obligatoires vient faire dans un champ Téléphone, encore moins en script de calcul…
 :Euuuh:   :doute:

IP archivée


robinmaaax  26 mars 2021 : 17:02

Je ne comprend toujours pas ce qu'un script de vérification des champs obligatoires vient faire dans un champ Téléphone, encore moins en script de calcul…
 :Euuuh:   :doute:


Hello, Je te joins un fichier contenant mon champ téléphone, mon script de gestion ainsi que des commentaires. N'hésite pas a me faire part de tes remarques s'il te plait.
Merci.

IP archivée


bebarth  27 mars 2021 : 08:53

bonjour,
Dans ton fichier, le script de document ne sert pas à grand chose. Si tu définis par défaut le cadre et la couleur du champ il s'ouvrira tel quel.Tu peux placer ton script de calcul en script de validation, ça fonctionnera pareil.
Comme son nom l'indique, le script de validation ne s'exécute que pour la validation du champ alors que le script de calcul s'exécute après chaque évènement ! Lorsque tu as un formulaire un peu compliqué il vaut mieux réduire au maximum le nombre de scripts de calcul afin de réduire les temps d'exécutions.
@+
 :bonjour:

IP archivée


Merlin  27 mars 2021 : 11:04

Le truc c'est que dans ton formulaire final il n'y aura pas qu'un seul champ à remplir (enfin je suppose), donc il faut prévoir plus large.

Dans le ci-joint tout est dans le bouton vert.

function controlOblig() {
var nCompteur = 0;
for (var i=0; i<this.numFields; i++) {
var oFld = this.getField(this.getNthFieldName(i));

// si champ texte ET obligatoire ET valeur = valeur par défaut
if (oFld.type == "text" && oFld.required == true && oFld.value == oFld.defaultValue) {
nCompteur = nCompteur + 1;
oFld.strokeColor = color.red;
}
else {oFld.strokeColor = color.green;}
}

if (nCompteur != 0) {app.alert("KO.\n\n" + nCompteur + " champs obligatoires ne sont pas remplis." );}
else {app.alert("OK");}
}
controlOblig();

IP archivée


robinmaaax  30 mars 2021 : 11:38

Le truc c'est que dans ton formulaire final il n'y aura pas qu'un seul champ à remplir (enfin je suppose), donc il faut prévoir plus large.

Dans le ci-joint tout est dans le bouton vert.

function controlOblig() {
   var nCompteur = 0;
    for (var i=0; i<this.numFields; i++) {
      var oFld = this.getField(this.getNthFieldName(i));
       
      // si champ texte ET obligatoire ET valeur = valeur par défaut
      if (oFld.type == "text" && oFld.required == true && oFld.value == oFld.defaultValue) {
         nCompteur = nCompteur + 1;
         oFld.strokeColor = color.red;
      }
      else {oFld.strokeColor = color.green;}
   }
   
   if (nCompteur != 0) {app.alert("KO.\n\n" + nCompteur + " champs obligatoires ne sont pas remplis." );}
   else {app.alert("OK");}
}
controlOblig();




Tu as tout bon  :bravo:    , c'est nettement plus simple maintenant. Merci beaucoup a vous!!!!

IP archivée


Merlin  30 mars 2021 : 12:37

 :bonjour:

Regarde bien dans les champs, ils ont tous la même Action "Champ activé" (onFocus).

IP archivée


robinmaaax  30 mars 2021 : 17:20

:bonjour:

Regarde bien dans les champs, ils ont tous la même Action "Champ activé" (onFocus).


Oui en effet je viens tout juste de remarquer. Du coup ils deviennent vert dès que l'utilisateur les active. J'apprécie surtout le fait qu'ils passent en rouge si non-remplis après validation.


Aussi, j'ai essayé de faire un peu pareil avec des cases a cocher. Ca semble marcher mais les champs repassent au rouge lorsque j'ouvre le fichier après l'avoir enregistré.
Je te joins mon fichier si tu peux y jeter un œil.


Merci d'avance.

IP archivée


Merlin  30 mars 2021 : 19:43

Il y avait beaucoup trop de scripts dans ce document.
Il faudrait que tu t'intéresses à la Console, elle donne des informations précieuses :
https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/console-javascript-d-acrobat/

IP archivée