abracadabraPDF › Forums › PDF – Général › Script qui ne marche plus dans bouton radio
- Ce sujet contient 12 réponses, 3 participants et a été mis à jour pour la dernière fois par
josh, le il y a 6 jours et 22 heures.
-
CréateurSujet
-
23 septembre 2026 à 18:18 #76659
josh
ParticipantSalut,
Ça fait un bail. J’ai un problème bizarre comme suit :
J’ai deux bouton radio pour M. et Mme qui doivent aller dans un champ texte avec un script dans chaque bouton.
Ces boutons, je les ai faits en 2024 (avec votre aide) et ils marchent très bien, mais voilà que je refais un document avec les mêmes boutons radio ainsi que leurs scripts et là ça ne marche plus. Les boutons s’ajoutent et ne donnent pas qu’une seule réponse (M. ou Mme).
Je vous joins un PDF avec les explications.
Il y a aussi la première lettre en majuscule dans le champ nom qui marche ou qui marche pas. J ai les nouvelles version d’acrobat et pdf xchange editor
Merci par avance.
Attachments:
You must be logged in to view attached files. -
CréateurSujet
-
AuteurRéponses
-
23 septembre 2026 à 21:52 #76661
MerlinMaître des clésBonjour
Ce document génère une erreur à l’ouverture, la console d’Acrobat se contente de signaler le numéro de la ligne d’où vient l’erreur mais celle de PDF-Change est plus bavarde. A priori ça vient du champ date mais je n’ai pas vérifié (voir capture).
Pour une raison que j’ignore le « nouveau » bouton « Madame » ne fonctionne pas du tout dans Acrobat, il fait s’afficher des caractères bizarres dans le champ « nom » (voir capture).
Comme pour les erreurs ci-dessus je n’ai pas cherché à comprendre pourquoi tes scripts ne fonctionnent pas, je les trouve inutilement longs et compliqués.
Comme exemple j’ai ajouté 2 cases à cocher dans le document ci-joint qui ont comme valeur d’exportation « M. » pour la première et « Mme » pour la seconde.
Ainsi il suffit de deux lignes de script placées dans lesdites cases à cocher pour que tout fonctionne correctement et sans faille.
Si tu veux utiliser ce script avec des boutons radio tu peux même supprimer la deuxième ligne qui ne servirait à rien (contrairement aux cases à cocher les boutons radio ne peuvent pas avoir la valeur « Off » car l’utilisateur ne peut pas les décocher).J’ai aussi supprimé le script de calcul du champ « nom » puisqu’il ne sert plus à rien.
Pour que des cases à cocher fonctionnent comme des boutons radio (une seule coche possible) il faut qu’elles aient exactement le même nom et une valeur d’exportation différente.
Attachments:
You must be logged in to view attached files.23 septembre 2026 à 21:53 #76664
MerlinMaître des clésCi-joint le document PDF que j’ai modifié (on ne peut pas mettre plus de 2 pièces jointes dans un post).
Attachments:
You must be logged in to view attached files.24 septembre 2026 à 12:16 #76667josh
Participantsalut,
la solution est très simple et marche très bien. pour Mr et Mme.
mais qu’ en est t il pour avoir la première lettre en majuscule dans le champ « nom » .
j’ai oublier de mettre le script dans calcul de la valeur, script personnaliser :
event.target.value=this.getField(« nom »).value.toLowerCase().replace(/(^|\s|\-)\D/g,function(cWrd){return cWrd.toUpperCase()});
Mais il ne marche pas ou plutôt plus.
merci.
24 septembre 2026 à 16:24 #76668
bebarthMaître des clésbonjour,
Enfin un problème !!!Je suis un peu surpris que ton script fonctionnait en 2024 alors que c’est le même qu’en 2026…
Tu écris... +f.value.replace(/^(M.\s)|(Mᵐᵉ\s)...alors que les valeurs de tes boutons radios sont « Mr » et « Mme », ce qui n’est pas du tout la même chose.
Le script des boutons radios est dépend d’une action Souris relâchée, la valeur ne peut donc jamais être « Off » et la conditionif (event.target.value!="Off")n’est donc pas nécessaire; Il suffit donc juste d’écrire :
this.getField("nom").value=event.target.value+" "+this.getField("nom").value.replace(/^(Mr\s)|(Mme\s)/,"");Dans ton champ « nom » j’ai placé et adapté un script de calcul récupéré d’un de mes précédents scripts :
function minusculeSaufApresSeparateur(texte) {
// Vérification des espaces
texte=texte
.toLowerCase()
.replace(/[\s]+/g," ")
.replace(/^[\s]/,"")
.replace(/[\s]$/,"")
.replace(/[\s](['’])/g,"$1")
.replace(/(['’])[\s]/g,"$1");
return texte.replace(/(^|[\s\-'’])([^\s\-'’])/g,function(mot,separateur,caractere,position,chaine) {
var i=position+mot.length; // indice du caractère suivant
var suivant=chaine.charAt(i);
// "d" ou "l" suivi d'une apostrophe -> reste en minuscule
if ((caractere=="d" || caractere=="l") && (suivant=="'" || suivant=="’")) return separateur+caractere;
// Mot "de" isolé -> reste en minuscule
if (caractere=="d" && suivant=="e" && /^([\s\-'’]|$)/.test(chaine.charAt(i+1))) return separateur+caractere;
return separateur+caractere.toUpperCase();
});
}
try {
event.target.value=minusculeSaufApresSeparateur(event.target.value);
} catch(e) {}
if (event.target.value=="Mr" || event.target.value=="Mme") event.target.value=event.target.value+" ";Normalement tout fonctionne bien.
@+
😎PS : L’erreur indique dans la console pour le champ date venait du script de document avec une erreur de syntaxe. Il fallait écrire :
...
f.value = util.printd("dddd dd mmmm yyyy", new Date());-
Cette réponse a été modifiée le il y a 1 semaine et 1 jour par
bebarth.
Attachments:
You must be logged in to view attached files.24 septembre 2026 à 17:37 #76671josh
Participantsalut,
merci a toi bebarth pour la solution qui marche très bien comme d’hab.
mais si je peux etre pointilleux(casse bonbon), quand tu selectionne l’un des deux bouton radio par exemple Mr et que tu tape un nom et entrée la majuscule n’apparait pas. Mai si tu appuie sur l’autre bouton radio Mme là la majucule apparait.
merci
ps : j’ai éssayer sur acrobat et pdf xchange éditor.
24 septembre 2026 à 18:28 #76672
bebarthMaître des clésTu voudrais que les Majuscules/Minuscules apparaissent correctement lors de la frappe ???
Ça doit se faire avec un script de touches personnalisé.
Je regarde ça…@+
😎24 septembre 2026 à 23:13 #76673
MerlinMaître des clés« la solution est très simple et marche très bien. pour Mr et Mme.
mais qu’ en est t il pour avoir la première lettre en majuscule dans le champ « nom » . »La valeur d’exportation des coches est « M. » ou « Mme », c’est cette valeur qui est placée dans le champ « nom ».
Comme il y a déjà une majuscule sur chacune de ces deux valeurs il y a forcément une majuscule à la valeur qui est placée dans le champ « nom », sans qu’il soit besoin d’utiliser quoi que soit d’autre.
25 septembre 2026 à 10:52 #76674josh
Participantje me suis mal fait comprendre, car ce que j’aimerai c’est que le nom de la personne, exemple : Mr dupont deviennent Mr Dupont. Et là por l’instant ça ne marche pas.
Merci
25 septembre 2026 à 11:05 #76675
MerlinMaître des clésJe crois que tu te casses la tête inutilement car si des gens ne savent pas écrire leur nom correctement tu ne pourras pas toujours les aider.
Mettre la première lettre en capitale c’est bien mais à quoi ça sert si l’utilisateur s’appelle :
- Dupont-Lajoie
- De Villepin
- Figueras De Oliveiras
- Boissy de Saint Pierre
- Etc.
???
25 septembre 2026 à 11:07 #76676
MerlinMaître des clésPS :
M. : c’est l’abréviation de monsieur
Mr : c’est l’abréviation de mister, et donc c’est de l’anglais.
🙂
25 septembre 2026 à 14:37 #76677
bebarthMaître des clésbonjour,
Voici un script inspiré d’un sujet déjà traité en 2021 mais dont le fichier n’est plus accessible :Majuscule automatique dans le champ Prénoms et dans le script de sauvegarde
if(!event.willCommit) {
if (event.selStart==0) event.change=event.change.toUpperCase();
if (event.selStart<=1 && (event.change==" " || event.change=="-")) event.change="";
else {
var aRslt=event.value.split("");
if (event.selStart==0 || aRslt[event.selStart-1]==" " || aRslt[event.selStart-1]=="-") event.change=event.change.toUpperCase();
else event.change=event.change.toLowerCase();
aRslt.splice(event.selStart, event.selEnd-event.selStart, event.change);
var strTest=aRslt.join("");
var rpat=/^(M.\s|Mme\s)?[a-zA-ZÀ-ÖØ-öø-ÿ]*([a-zA-ZÀ-ÖØ-öø-ÿ]+[\s|\-|\']?)*$/;
event.rc=rpat.test(strTest);
}
} else {
var rpat=/^(M.\s|Mme\s)?[a-zA-ZÀ-ÖØ-öø-ÿ]*([a-zA-ZÀ-ÖØ-öø-ÿ]+[\s|\-|\']?)*$/;
event.rc=(event.value=="") || rpat.test(event.value);
}J’ai aussi corrigé le « Mr » en « M. ».
@+
😎Attachments:
You must be logged in to view attached files.25 septembre 2026 à 20:27 #76679josh
Participantsalut,
parfait, exactement ce que j’avais en tête.
je vais essayer de comprendre le script.
et merci à merlin pour ces conseils.
À la prochaine.
-
Cette réponse a été modifiée le il y a 1 semaine et 1 jour par
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.
