Majuscule automatique dans le champ Prénoms et dans le script de sauvegarde  (Lu 107 fois) Partager ce sujet Imprimer

1 B


Minautore  03 avril 2021 : 02:04

Bonjour à tous,

Je rencontre un problème pour automatiser le remplissage du champ prénom ET sa retranscription dans un script pour obtenir le format de sauvegarde. Mon bouton me donne le format  suivant: NOM_Prénoms_nom de fichier via le script:
var strFixe = "Nom de fichier";
var strNom = this.getField("NOM").value;
var strPrénom = this.getField("Prénoms").value;
if (app.language == "FRA")
{var strTitre = strFixe + " - Enregistrement";
var strQuestion = "COPIEZ(ctrl+c) le nom propos\u00E9 ci-dessous,  COLLEZ(ctrl+v) dans la fen\u00EAtre d'enregistrement .";
}
else
{var strTitre = strFixe + " - Save As";
var strQuestion = "COPY below proposed text and PASTE it in the following box to use it as file name:";
}
var strDisplay = strNom + "_" + strPrénom + "_"+ strFixe + ".pdf";
var saveRep = app.response({cQuestion: strQuestion, cTitle: strTitre, cDefault: strDisplay,});
if (saveRep != null);

J'ai bien ce format quand les utilisateurs utilisent bien le format NOM_Prénoms.

Mais pour palier à une défaillance, j'aimerai automatiser le remplissage des champs NOM et Prénoms.

J'ai réussi à automatiser le champ NOM via script de touche perso:

event.change = event.change.toUpperCase();
Le format est bien retranscrit dans mon script de bouton pour obtenir le nom de sauvegarde contrairement au script de format:
event.value = event.target.value.toUpperCase();

Par contre les scripts que j'ai trouvé pour Prénoms ne marche qu'à l'affichage mais pas dans le nom de sauvegarde proposé.

Tous, tous sauf ce script de touches:

str = event.target.value;event.value = str.replace(/(^|\s|[\-\,\.])\w/g,function(cWrd){return cWrd.toUpperCase()});
Le problème, c'est que la première saisie reste en mémoire dans le champ Prénoms sans pouvoir l'effacer . :mur:

Il doit pas manquer grand chose mais je trouve pas... :Euuuh:

IP archivée


Merlin  03 avril 2021 : 11:05

Bonjour

- Utiliser des caractères accentués dans les noms de champs et de variables est toujours une mauvaise idée :
var strPrénom = this.getField("Prénoms").value;
var strDisplay = strNom + "_" + strPrénom + "_"+ strFixe + ".pdf";



-
Citer
Par contre les scripts que j'ai trouvé pour Prénoms ne marche qu'à l'affichage mais pas dans le nom de sauvegarde proposé.
En fait ça ne dépend pas du script lui-même, ça dépend de la façon dont il est utilisé.
Comme son nom le suggère, un script de format ne s'applique qu'au "format" des données, c'est-à-dire à leur présentation visuelle, mais il ne change pas les données en elles mêmes.
Par exemple un champ avec un format monétaire peut afficher 1234 € alors que sa vraie valeur est 1234, ce qui permet d'effectuer des calculs sans se préoccuper de la présence du symbole monétaire .

Dans ton cas c'est pareil, la capitalisation de la première lettre est virtuelle et ne sert que pour l'affichage.
Voir ce tuto : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/


- Capitaliser la première lettre du prénom est plus difficile qu'il n'y parait : quid des prénoms composés ?
Comment vas tu capitaliser jean-jacques ou jean jacques, sachant que beaucoup d'utilisateurs oublient le trait d'union ?
(J'ai toujours été sidéré par le nombre de gens qui ne savent pas écrire leur prénom correctement  :Smiley03: )

IP archivée


Minautore  03 avril 2021 : 11:34

Merci pour ta réponse.

Je ne savais pas pour les noms de champ avec des lettres accentuées, j'y penserai.

Dommage que cela ne fonctionne que pour le champ NOM en majuscule, ça ne sert à rien si je ne peux pas récupérer le bon format des Prénoms .

Je croyais que la solution était toute proche avec mon dernier script mais je comprend pas pourquoi la première saisie reste sans que l'on puisse l'effacer.

Tant pis, les gens devront faire attention.

Citer
(J'ai toujours été sidéré par le nombre de gens qui ne savent pas écrire leur prénom correctement   )

On remplit les formulaires pour les gens, les erreurs dans les prénoms sont inévitables malheureusement.



Encore merci et bonne journée.






IP archivée


bebarth  03 avril 2021 : 12:08

bonjour,
Et du coup tu voudrais quoi pour ton champ Prénom ? Parce que l'expression régulière que tu utilises n'est pas claire pour moi. Elle semble mettre en majuscule la lettre qui suit un espace, un tiret, une virgule ou un point. C'est cela ?
Il faudrait le faire directement en script de touches personnalisé afin que la frappe soit prise en compte directement.
Tu me dis et je regarde ce weekend.
@+
 :bonjour:

IP archivée


Minautore  03 avril 2021 : 12:18

Dans l'idéal, je voudrais que la première lettre se mette en Majuscule et si il y a espace ou tiret mettre la lettre suivante en majuscule.

J'ai copier coller le script trouvé ici dans un vieux sujet sans le modifier ce qui explique qu'il y ait la virgule et le point.

IP archivée


bebarth  05 avril 2021 : 19:57

bonjour,
Voici un script qui fonctionne bien en frappe direct.
Par contre, lorsqu'on effectue une modification en ajoutant une lettre devant une majuscule, cette lettre passe bien en majuscule mais la suivante qui devrait passer en minuscule reste en majuscule dans ce champ. Dans l'autre champ (calculé) le script rétablit bien les lettres.
Merlin, si tu as une idée !!!
Comme d'habitude l'expression régulière (en cours de frappe) "SEMBLAIT" pas trop compliquée, mais j'ai galéré un peu pour la répétition des blocs de mots...
@+
 :bonjour:

IP archivée


Minautore  05 avril 2021 : 22:05

Un grand merci à toi pour ta réponse et le temps passé à rédiger ces scripts. :bonjour:

Cela me convient parfaitement.

Fun fact: si on appuie sur deux lettres en même temps, les deux sont en majuscules  :jerisjaune:  mais ce n'est pas important puisque ce n'est pas sensé se produire.

Bonne soirée.


IP archivée