Alerte légitime mais gênante lors d'un this.reset.Form  (Lu 483 fois) Partager ce sujet Imprimer

1 B


zolo72  09 janvier 2017 : 16:06

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

IP archivée


Merlin  09 janvier 2017 : 11:20

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:

IP archivée


zolo72  08 janvier 2017 : 20:51

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

IP archivée


Merlin  08 janvier 2017 : 19:48

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…

IP archivée


zolo72  08 janvier 2017 : 18:57

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...

IP archivée


Merlin  08 janvier 2017 : 14:46

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:

IP archivée


zolo72  08 janvier 2017 : 13:12

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.

IP archivée


Merlin  08 janvier 2017 : 12:34

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:

IP archivée


Merlin  08 janvier 2017 : 11:39

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:

IP archivée


zolo72  07 janvier 2017 : 16:56

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();
}

IP archivée


Merlin  07 janvier 2017 : 11:14

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/

IP archivée


bebarth  06 janvier 2017 : 23:17

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

IP archivée


zolo72  06 janvier 2017 : 22:49

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 ?

IP archivée


Merlin  06 janvier 2017 : 19:45

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:

IP archivée


zolo72  06 janvier 2017 : 17:49

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

IP archivée