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.