Inscrivez-vous

abracadabraPDF Forum

Le seul forum francophone entièrement dédié au format PDF

zolo72

06 janvier 2017 : 17:49
Apprenti sorcier Messages: 24
Bonjour
J'ai un champ de formulaire "département" dont la validation est contrôlée pour respecter la forme "1 chiffre 1 lettre (A ou B) limitée de plus à "<3 + A-B" assortie d'une interdiction des "96, 98, 99, 00, 20, 1A, 1B"
Une alerte s'affiche en cas de saisie invalide et le champ est mis à blanc, c'est parfait.
Problème : l'alerte s'affiche aussi lors d'un "this.resetForm" du formulaire dont le champ "département" est valablement rempli !
C'est logique, mais gênant.
Y a-t-il une solution ?
Merci d'avance

  • Grand magicien
  • Messages: 7 202
Bonjour.

Problème : l'alerte s'affiche aussi lors d'un "this.resetForm" du formulaire dont le champ "département" est valablement rempli !
C'est logique, mais gênant.

Gênant oui, logique non : si la valeur du champ est conforme au format de validation il ne devrait pas y avoir d'alerte.
Ou alors j'ai raté quelque chose…  :Euuuh:
« Modifié: 07 janvier 2017 : 11:09 par Merlin »
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 24
Merci Merlin pour la réactivité,

je m'explique : lorsqu'on clique sur le bouton "this.reset.Form" on a successivement le message programmé "voulez-vous ? etc." puis, après OK, l'alerte "saisie incorrecte etc." programmée pour les saisies invalides, c'est logique puisque valider le champ "département" à l'état de vide (depuis peu, certes) n'est pas une action valide !

C'est ce deuxième message d'alerte qui m'encombre et déroute l'utilisateur...

Un espoir de l'entraver ?

  • Grand magicien
  • Messages: 712
bonsoir,
je pense que le plus simple pour bien comprendre serait de poster un exemple !
@+
 :bonjour:

  • Grand magicien
  • Messages: 7 202
On me confirme par ailleurs que j'étais très fatigué hier soir…   :Ooops:  :geek:

Donc oui, c'est logique et normal.
Pour éviter ça il faut déplacer le script de validation en action "champ désactivé", dans la plupart des cas c'est possible.

Voir : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 24
Merci Merlin pour ce précieux tableau, à méditer !
Ta suggestion « action en "champ désactivé"»
Dans le cas présent, cela ne fonctionne pas, aucun contrôle de validation. Mon script ci-dessous, fonctionne indifféremment en "validation" ou "calcul". (Le "set;Focus" maintient le focus sur le champ "Dept" si on validé la saisie par TAB ou CLIC sur un autre champ.)
Le script :

var depart = /^[0-9]+[0-9A-B]$/;

var depart2 = /^[3-9]+[A-B]$/;

var depart3 = /^[1]+[A-B]$/;


if ((!depart.test(event.value)) || (event.value == "00") || (event.value == "20") || (event.value == "96") || (event.value == "98") || (event.value ==  "99"))

{
    app.alert({cMsg:"\r\r\r                        SAISIE INCORRECTE DU DÉPARTEMENT !\r\r\r                                   MERCI DE RECOMMENCER"});
    event.value = "";
    this.getField("Dept").setFocus();
}

else

if ((depart2.test(event.value)))

{
    app.alert({cMsg:"\r\r\r                        SAISIE INCORRECTE DU DÉPARTEMENT !\r\r\r                                   MERCI DE RECOMMENCER"});
    event.value = "";
    this.getField("Dept").setFocus();
}

else

if ((depart3.test(event.value)))

{
    app.alert({cMsg:"\r\r\r                        SAISIE INCORRECTE DU DÉPARTEMENT !\r\r\r                                   MERCI DE RECOMMENCER"});
    event.value = "";
    this.getField("Dept").setFocus();
}

  • Grand magicien
  • Messages: 7 202
Tu devrais prendre le problème à l'envers. Plutôt que de proposer une saisie libre et de tester toutes les erreurs possibles tu devrais ne proposer qu'une saisie contrôlée sans erreur possible.

En clair : une liste déroulante ou un popup menu JavaScript.
 :Smiley15:
Acrobate du PDF, InDesigner et Photoshopographe

  • Grand magicien
  • Messages: 7 202
Par ailleurs je ne comprends pas pourquoi interdire les 98n, il y a 4 départements dont le numéro commence par 98 : 986, 987, 988 et 989.
 :doute:
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 24
Merci Merlin,

Ton conseil est sage, mais la liste déroulante des départements me rebute perso quand on me l'impose.
Je suis adepte du "ne fais pas aux autres etc."
Il suffit d'oublier les alertes et d'invalider les frappes non-conformes, c'est l'état actuel.
Une fenêtre popup avec 5 ou 6 colonnes de 20, ce serait bien.
Je n'ai jamais pratiqué.
S'il y a des exemples, je suis preneur.
Bien reconnaissant.

PS Je n'admets que "97", c'est voulu.

  • Grand magicien
  • Messages: 7 202
Puisque ça fonctionne en script de calcul, tu peux faire ça et bloquer les calculs pendant le reset :

this.calculate = false;
[s]this.resetForm;[/s]
this.calculate = true;

 :Smiley03:
« Modifié: 08 janvier 2017 : 19:48 par Merlin »
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 24
Merlin,
J'ai essayé de placer tes lignes de script (sans "()" ou avec,
1 — dans le script du bouton "reset"
2 — dans le script de validation du champ "Dept" placé dans l'onglet "calcul".
Sans parvenir à un résultat satisfaisant.
Soit la validation ne se faisait pas, soit elle fonctionnait et l'alerte indésirable suivait l'alerte reset "voulez-vous etc."
Sans doute un placement défectueux dans l'ordre des lignes...

  • Grand magicien
  • Messages: 7 202
dans le script du bouton "reset"

À la place du script du bouton reset :
this.calculate = false;
this.resetForm(); // effectivement j'avais oublié les parenthèses
this.calculate = true;

Mais comme déjà dit, si tu postais un exemple on y verrait plus clair…
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 24
Merlin,
Je suis enchanté !
It works !
Voici le script du bouton "reset" à l'usage des populations méritantes, non moins que souffrantes :

{var alerte = "\r\r\r\rVoulez-vous vraiment supprimer le contenu de TOUS les champs de donn\u00E9es ?\n\n                          Cette action ne pourra  pas \u00EAtre annul\u00E9e.";}
this.calculate = false;
if (app.alert({cMsg:alerte, nIcon:1, cTitle:"ZOLO", nIcon: 1, nType: 2}) == 4)
this.calculate = false;
this.resetForm();
this.calculate = true;

Je n'y croyais plus.
Bravo et merci encore
« Modifié: 09 janvier 2017 : 16:15 par Merlin »

  • Grand magicien
  • Messages: 7 202
Houla !
Rangez-moi ces accolades placées n'importe où et supprimez-moi ces doublons :

var alerte = "Voulez-vous vraiment supprimer le contenu de TOUS les champs de donn\u00E9es ?\n\nCette action ne pourra  pas \u00EAtre annul\u00E9e.";
this.calculate = false;
if (app.alert({cMsg:alerte, nIcon:1, cTitle:"ZOLO", nIcon: 1, nType: 2}) == 4)
{
this.calculate = false;
this.resetForm();
this.calculate = true;
}


 :Smiley03:
« Modifié: 09 janvier 2017 : 16:18 par Merlin »
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 24
Bon, les accolades étaient à leur place dans le script.
La fatigue est cause de la recopie débile.
En attendant, je suis retombé sur d'autres soucis.
A suivre