Donnez vie à vos documents numériques !
 

Script qui ne marche plus dans bouton radio

abracadabraPDF › Forums › PDF – Général › Script qui ne marche plus dans bouton radio

  • Créateur
    Sujet
  • #76659
    josh
    Participant

    Salut,

    Ç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.
Affichage de 12 réponses de 1 à 12 (sur un total de 12)
  • Auteur
    Réponses
  • #76661
    Merlin
    Maître des clés

    Bonjour

     

    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.
    #76664
    Merlin
    Maître des clés

    Ci-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.
    #76667
    josh
    Participant

    salut,

    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.

    #76668
    bebarth
    Maître des clés

    bonjour,
    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 condition if (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.
    #76671
    josh
    Participant

    salut,

    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.

    #76672
    bebarth
    Maître des clés

    Tu voudrais que les Majuscules/Minuscules apparaissent correctement lors de la frappe ???
    Ça doit se faire avec un script de touches personnalisé.
    Je regarde ça…

    @+
    😎

    #76673
    Merlin
    Maî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.

    #76674
    josh
    Participant

    je 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

     

    #76675
    Merlin
    Maître des clés

    Je 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.

    ???

    #76676
    Merlin
    Maître des clés

    PS :

    M. : c’est l’abréviation de monsieur

    Mr : c’est l’abréviation de mister, et donc c’est de l’anglais.

    🙂

    #76677
    bebarth
    Maître des clés

    bonjour,
    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.
    #76679
    josh
    Participant

    salut,

    parfait, exactement ce que j’avais en tête.

    je vais essayer de comprendre le script.

    et merci à merlin pour ces conseils.

    À la prochaine.

     

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