abracadabraPDF › Forums › PDF – Général › Alerte légitime mais gênante lors d’un this.reset.Form
- Ce sujet est vide.
-
CréateurSujet
-
6 janvier 2017 à 16:49 #45566
zolo72
MembreBonjour
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
limitée de plus à «
+ 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 -
CréateurSujet
-
AuteurRéponses
-
6 janvier 2017 à 18:45 #61906
MerlinMaître des clésBonjour.
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:6 janvier 2017 à 21:49 #61907zolo72
MembreMerci 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 ?
6 janvier 2017 à 22:17 #61908
bebarthMaître des clésbonsoir,
je pense que le plus simple pour bien comprendre serait de poster un exemple !
@+
:bonjour:7 janvier 2017 à 10:14 #61909
MerlinMaître des clésOn 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.7 janvier 2017 à 15:56 #61910zolo72
MembreMerci 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: »rrr SAISIE INCORRECTE DU DÉPARTEMENT !rrr MERCI DE RECOMMENCER »});
event.value = « »;
this.getField(« Dept »).setFocus();
}else
if ((depart2.test(event.value)))
{
app.alert({cMsg: »rrr SAISIE INCORRECTE DU DÉPARTEMENT !rrr MERCI DE RECOMMENCER »});
event.value = « »;
this.getField(« Dept »).setFocus();
}else
if ((depart3.test(event.value)))
{
app.alert({cMsg: »rrr SAISIE INCORRECTE DU DÉPARTEMENT !rrr MERCI DE RECOMMENCER »});
event.value = « »;
this.getField(« Dept »).setFocus();
}8 janvier 2017 à 10:39 #61911
MerlinMaître des clésTu 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:8 janvier 2017 à 11:34 #61912
MerlinMaître des clésPar 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:8 janvier 2017 à 12:12 #61913zolo72
MembreMerci 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.
8 janvier 2017 à 13:46 #61914
MerlinMaître des clésPuisque ça fonctionne en script de calcul, tu peux faire ça et bloquer les calculs pendant le reset :
Code:this.calculate = false;this.resetForm;
this.calculate = true;:Smiley03:
8 janvier 2017 à 17:57 #61915zolo72
MembreMerlin,
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…8 janvier 2017 à 18:48 #61916
MerlinMaître des clésdans le script du bouton « reset »
À la place du script du bouton reset :
Code: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…
8 janvier 2017 à 19:51 #61917zolo72
MembreMerlin,
Je suis enchanté !
It works !
Voici le script du bouton « reset » à l’usage des populations méritantes, non moins que souffrantes :Code:{var alerte = « rrrrVoulez-vous vraiment supprimer le contenu de TOUS les champs de donnu00E9es ?nn Cette action ne pourra pas u00EAtre annulu00E9e. »;}
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 encore9 janvier 2017 à 10:20 #61918
MerlinMaître des clésHoula !
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 donnu00E9es ?nnCette action ne pourra pas u00EAtre annulu00E9e. »;
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:
9 janvier 2017 à 15:06 #61919zolo72
MembreBon, 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 -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.
