Donnez vie à vos documents numériques !
 

Syntaxe pour vérifier qu’un champ contient au moins 2 lettres ET des chiffres

abracadabraPDF Forums PDF – Général Syntaxe pour vérifier qu’un champ contient au moins 2 lettres ET des chiffres

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46372
    Logic
    Membre

    Bonjour,
    Grâce au forum et ses membres, j’ai réussi à faire un formulaire assez complet.
    Malgré tous mes efforts pour border son remplissage, j’ai encore des utilisateurs qui arrivent à renseigner des erreurs :
    Je chercher à vérifier un champ qui doit contenir au moins 2 lettres ET des chiffres ( Ex : x-99×9 ou x99x9 ou xx-999×9 ou xx999x9 )
    A minima, alphanumérique si la demande ci dessus est trop complexe. J’ai trouvé un sujet sur le forum mais les fichiers joints ne sont plus dispo et le lien vers planetPDF est mort.
    Merci de votre aide.

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

    Bonjour et bienvenue

    Son principal fondateur est mort (jeune, la quarantaine) l’année dernière et pendant le confinement (français) PlanetPDF a disparu dans un trou noir.  :Smiley11:
    https://www.pdfa.org/in-memory-of-karl-de-abrew/

    Le plus simple est d’utiliser un “masque arbitraire” : https://abracadabrapdf.net/forum/index.php/topic,1301.msg5905.html#msg5905
    Le truc c’est qu’il faudra que tu choisisses une seule syntaxe parmi les 4 que tu proposes.
    Si on veut que le champ accepte plusieurs syntaxes (avec et sans tirets, etc) il faudrait utiliser un script JavaScript.

    #67871
    Logic
    Membre

    Ah…paix à son âme
    Pour en revenir à ma question, c’est bien un bout de code que je recherche :
    Sans aller trop loin, si déjà je pouvais vérifier qu’il y a des lettres ET des chiffres dans la valeur du champ. je serai déjà très content.

    du genre : Si tous les caractères du champ sont des chiffres ou tous les caractères sont de lettres
    app.alert

    #67872
    Merlin
    Maître des clés

    Essaye ça en script de validation dans le champ concerné.
    Normalement cette regex devrait capter les 4 exemples que tu as donné (non testé).

    strTXT = event.value;
    if ((/[lu]-?ddd?[lu]d/.test(strTXT)) && (strTXT != “”) && (strTXT != undefined)) {
    // script OK
    }
    else {
    // script KO
    }

    #67873
    bebarth
    Maître des clés

    bonjour,
    L’expression régulière permet effectivement de vérifier si le texte est conforme à l’une des 4 syntaxes.
    Moi je te propose d’alerter en fin de frappe :

    Code:
    // Script d’action champ désactivé
    var modeleRegEx=/^D{1,2}-?d{2,3}Dd$/;
    if (!modeleRegEx.test(event.value)) app.alert(“La syntaxe n’est pas correcte.”,3);

    ou de gérer la frappe :

    Code:
    // Script des touches personnalisé
    if(!event.willCommit) {
        var aTester=event.value.split(“”);
        aTester.splice(event.selStart, event.selEnd-event.selStart, event.change);
        var testeChaine=aTester.join(“”);
        // Teste de validité de l’entrée
        var modeleRegEx=/^D{0,2}-?(d{0,3}(D(d)?)?)?$/;
        event.rc=modeleRegEx.test(testeChaine);
    } else {
        var modeleRegEx=/^D{1,2}-?d{2,3}Dd$/;
        event.rc=(event.value==””) || modeleRegEx.test(event.value);
    }

    @+
    :bonjour:

    #67874
    Logic
    Membre

    Merci Bebarth et Merlin de vous pencher sur mon problème,
    Quand je parlais de syntaxe  :oh: on est en plein dedans !
    Je ne connais pas du tout modeleRegEx, j’ai encore beaucoup de choses à découvrir.
    Bebarth, j’ai choisi la vérification quand on sort du champ : Impeccable  :extra:

    Une autre petite question pour finaliser mon formulaire :

    j’ai adapté un code de Bebarth pour empêcher les utilisateurs d’enregistrer et leur indiquer qu’il faut utiliser un bouton pour valider le formulaire.
    Cependant que je réponde oui ou non le formulaire s’enregistre  :doute:

    var cMsg = “AVERTISSEMENT:”;
    cMsg += “nnSi vous enregistrez, les donnu00E9es saisies dans ce formulaire ne seront pas conservu00E9es !”;
    cMsg += “nnUtilisez le bouton IMPRIMER pour enregistrer le formulaire complu00E9tu00E9 au format PDF.”;
    cMsg += “nnEtes-vous sûr de vouloir enregistrer ?”;

    var nRtn = app.alert(cMsg,2,2);
    if(nRtn == 4)
    this.resetForm();
    else if(nRtn == 3)
    exit;
    else
    //Unknown Response
      console.println(“The Response Was somthing other than Yes/No: ” + nRtn);

    Où est ce que je me suis trompé ?

    #67875
    Merlin
    Maître des clés

    Tu ne t’es pas trompé.

    pour empêcher les utilisateurs d’enregistrer

    :tutut:
    Heureusement pour les utilisateurs il n’est pas possible de les empêcher d’enregistrer (il y a des cas de force majeure : coupure de courant dans 2 mn, etc.) ou d’imprimer un document via un JavaScript.
    On peut placer des script en évènements “Document sera  imprimé” ou “Document sera enregistré”, avec des alertes on non, mais ça n’empêche pas la suite des évènements de se produire (dialogue Enregistrer ou dialogue Imprimer).

    Il est toujours beaucoup plus simple, plus productif et plus user-friendly, c’est de simplement alerter l’utilisateur en lui affichant : “Tous les champs obligatoires ne sont pas remplis blablabla, voulez-vous enregistrer/imprimer ce document quand-même ?”.

    – Parce-qu’il ne sait pas que s’il clique NON il aura quand même ce qu’il voulait.
    – Parce-qu’une fois averti, c’est un grand-garçon/fille qui sait ce qu’il/elle fait. Et qui a le plus souvent de bonnes raisons de vouloir le faire.
    :Smiley15:

    #67876
    bebarth
    Maître des clés

    Bebarth, j’ai choisi la vérification quand on sort du champ : Impeccable  :extra:

    Perso, j’aurais choisi l’autre méthode. Je trouve plus logique de contrôler la frappe instantanée plutôt que t’attendre la fin complète de la frappe et dire à l’utilisateur qu’il s’est trompé…
    @+
    :bonjour:

    #67877
    Logic
    Membre

    Merlin, je loue ta foi en les utilisateurs ce que je faisait aussi mais comme disait l’autre ça c’était avant.
    Mon formulaire d’origine était très light,  pas de contrôle de champ, des cases cochées par défaut pour gagner du temps bref le truc simplissime.
    Résultat dans 95% des cas, le formulaire est mal rempli. J’ai dû tout revoir et infantilisé mes utilisateurs en essayant de tout border pour avoir des informations correctes dans les champs.
    Par exemple, j’ai fait ma demande initiale pour éviter que les utilisateurs renseignent un nombre au lieu d’un code alphanumérique…en ayant comme réponse : “Ah mince, j’ai pas vu…pourtant je me suis appliqué…” Bref, ils sont tous débordés et remplissent à la “one again”. Au final, moi et mon équipe perdons beaucoup de temps par la suite à essayer d’avoir les bonnes informations.

    Pour ce qui est d’enregistrer, le formulaire est dispo sur un réseau et doit rester propre. c’est la 1ère raison qui fait que je ne veux qu’il puisse enregistrer.
    La deuxième, c’est que le document enregistré fait 2,5 Mo contre quelques centaines de ko en passant par imprimer mais surtout, en faisant enregistrer, les champs peuvent être modifié à posteriori ce qui n’est pas compatible avec l’utilisation prévue : une fois validé, personne ne doit pouvoir changer son contenu.

    Si tu as des solutions plus adaptées je suis preneur.

    Bon weekend à tous.

    #67878
    Merlin
    Maître des clés

    une fois validé, personne ne doit pouvoir changer son contenu.
    Si tu as des solutions plus adaptées je suis preneur.

    Tu devrais t’intéresser aux signatures numériques, a priori c’est ce que tu cherches : une fois signé un document n’est plus modifiable.
    Et si on parvenait à le modifier quand même ça invaliderait la signature.

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