Donnez vie à vos documents numériques !
 

Alerte légitime mais gênante lors d’un this.reset.Form

abracadabraPDF Forums PDF – Général Alerte légitime mais gênante lors d’un this.reset.Form

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45566
    zolo72
    Membre

    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

Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Auteur
    Réponses
  • #61906
    Merlin
    Maître des clés

    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:

    #61907
    zolo72
    Membre

    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 ?

    #61908
    bebarth
    Maître des clés

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

    #61909
    Merlin
    Maître des clés

    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/

    #61910
    zolo72
    Membre

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

    #61911
    Merlin
    Maître des clés

    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:

    #61912
    Merlin
    Maître des clés

    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:

    #61913
    zolo72
    Membre

    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.

    #61914
    Merlin
    Maître des clés

    Puisque ç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:

    #61915
    zolo72
    Membre

    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…

    #61916
    Merlin
    Maître des clés

    dans 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…

    #61917
    zolo72
    Membre

    Merlin,
    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 encore

    #61918
    Merlin
    Maître des clés

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

    #61919
    zolo72
    Membre

    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

Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Vous devez être connecté pour répondre à ce sujet.