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éateurSujet
-
2 juillet 2020 à 14:47 #46372
Logic
MembreBonjour,
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. -
CréateurSujet
-
AuteurRéponses
-
2 juillet 2020 à 17:17 #67870
Merlin
Maître des clésBonjour 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.2 juillet 2020 à 18:35 #67871Logic
MembreAh…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.alert3 juillet 2020 à 11:10 #67872Merlin
Maître des clésEssaye ç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
}3 juillet 2020 à 11:35 #67873bebarth
Maître des clésbonjour,
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:3 juillet 2020 à 13:21 #67874Logic
MembreMerci 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é ?
3 juillet 2020 à 18:09 #67875Merlin
Maître des clésTu 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:3 juillet 2020 à 18:59 #67876bebarth
Maître des clésBebarth, 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:3 juillet 2020 à 19:39 #67877Logic
MembreMerlin, 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.
3 juillet 2020 à 20:36 #67878Merlin
Maître des clésune 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. -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.