abracadabraPDF › Forums › PDF – Général › Vérification des champs obligatoires avant envoi d’un formulaire. – RÉSOLU
- Ce sujet est vide.
-
CréateurSujet
-
20 février 2013 à 16:03 #44444
jsamica
MembreBonjour à tous,
Désolé je relance ce sujet après plusieurs posts existant mais je n’ai pas trouvé mon bonheur. :doute:
Je n’arrive pas à trouver plus de détails sur un exemple de script, sur le blocage de l’envoi d’un formulaire PDF.
En effet par le biais d’un bouton d’envoi avec la fonction this.mailDoc… j’envoie donc mon formulaire rempli, en pièce jointe dans un mail.
Cependant je souhaite qu’avant l’envoi du form, il y est une vérification des champs obligatoires prévenant l’utilisateur, si celui ci ne les a pas tous remplis lorsqu’il clique sur le bouton d’envoi.Je sais qu’à priori il faut utiliser la fonction this.submitform pour vérifier si les champs obligatoires sont remplis.
Dans la doc Adobe js, d’après ce que j’ai compris c’est que cette fonction n’est applicable uniquement pour alimenter une bdd.
J’ai donc du mal à comprendre, comment utilisée cette fonction, et l’adapté à mon besoin.
Quelqu’un aurait un exemple, ou de plus amples explications ?Merci.
:Smiley03: -
CréateurSujet
-
AuteurRéponses
-
20 février 2013 à 17:02 #54668
Merlin
Maître des clésSalut,
As tu déjà épluché cet exemple ?
http://abracadabrapdf.net/articles.php?lng=fr&pg=7221 février 2013 à 10:31 #54669jsamica
MembreSalut Merlin,
Oui j’ai épluché ton fichier, merci pour la piqure de rappel, ça fait toujours du bien !J’ai quand même quelques interrogations, pour que il y ait une validation de champs si j’ai bien compris:
– il faut envoyer le fichier au format fdf par le biais de l’interface “envoyer un formulaire” ?
– Si je souhaite envoyer l’intégralité du fichier au format pdf, cela n’est pas réalisable fonctionnellement ?De plus dans mon test malgré avoir renseignements les champs obligatoires (définit dans la fenêtre envoyer les sélections du formulaire, et sélectionné les champs…) j’ai ce message suivant: Objet spécifications du fichier incorrect.
Merci pour ces précisions
:bonjour:22 février 2013 à 10:36 #54670jsamica
MembreBonjour à tous,
Alors pas de solutions ??Sinon, y a pas de possibilité de contourner le problème ? :priere:
Du genre, je concatène les valeurs des champs dit obligatoires dans un champ, si une des valeurs est vide, je cache le bouton d’envoi ? :doute:Merci
:bonjour:22 février 2013 à 10:48 #54671Merlin
Maître des clés– il faut envoyer le fichier au format fdf par le biais de l’interface “envoyer un formulaire” ?
– Si je souhaite envoyer l’intégralité du fichier au format pdf, cela n’est pas réalisable fonctionnellement ?Exemple ci-joint, ça fonctionne dans les deux cas.
(Les champs À et Objet sont obligatoires):Smiley01:
[attachment deleted by admin]
22 février 2013 à 13:10 #54672jsamica
MembreSalut Merlin
merci, effectivement comme ça, sa fonctionne !
Par contre comment sa marche pour une adresse mail variable ?Sinon je vais continuer me creuser la tête sur script avec la super doc js !!
Si par bonheur je trouve un truc, je ne manquerai d’en faire profiter tous nos amis du forum !
:geek::bonjour:
22 février 2013 à 14:26 #54673Merlin
Maître des clésPar contre comment sa marche pour une adresse mail variable ?
Bonne question…
Fais voir un exemple.
:Smiley03:22 février 2013 à 15:05 #54674jsamica
Membrere,
Je t’es envoyé l’exemple en mp (pour des raisons de temps et d’anonymat)
Au besoin merci me solliciter si quelqu’un souhaite avoir un exemple:joker:
23 février 2013 à 13:59 #54675Merlin
Maître des clésJ’ai mis le temps à bien comprendre ton problème et je suis stupéfait de constater que dès qu’on n’utilise pas la fonction Submit de base les champs obligatoires ne sont pas vérifiés, même pas en option…
:mur:J’ai trouvé divers sujets (ci-joints) sur la question avec différentes façon d’aborder le problème. (Ce sont des captures car soit les sujets soit les forums n’existent plus ou ont été modifiés.)
J’ai fait un exemple à partir du formulaire de contact cité ci-dessus en utilisant la méthode d’Alex (voir son exemple ci-joint : check required fields before print.pdf), c’est celle que je préfère car elle relève plus d’une mise en œuvre dans un vrai processus de production que de l’astuce de forum brute de décoffrage.D’autre part son principe est simple : plutôt que d’utiliser un long script compliqué* avec des si et des conditions il utilise un script de vérification en action souris-entrée qui affiche une alerte si un champ obligatoire n’est pas rempli.
Dans l’exemple ci-joint (FormContact_obligatoire.pdf) je n’ai eu qu’à rajouter le script en action souris-entrée dans les boutons d’envoi (et à modifier le nom des champs).Dès que l’alerte est affichée, le bouton n’est plus utilisable tant que l’utilisateur n’a pas cliqué OK dans l’alerte, et donc le bouton ne peut pas déclencher le script d’envoi placé en action souris-relachée. Et ça recommence inlassablement tant que tout n’est pas rempli correctement.
Après que l’utilisateur clique OK le focus (le curseur) se place dans le champ concerné, on pourrait facilement y ajouter un contour rouge, etc.
Dans cet exemple le script limite la quantité de champs obligatoires possibles à 11 pour optimiser sa vitesse d’exécution, mais ce n’est qu’un chiffre à modifier dans le code.C’est très souple à utiliser parce-que c’est le préfixe du nom du champ qui détermine son caractère obligatoire, et non pas la Propriété du même nom (tant qu’à faire ignorons là jusqu’au bout…).
Et c’est très “user-friendly” parce-que c’est le texte contenu dans l’info-bulle qui apparait comme nom de champ dans l’alerte affichée à l’utilisateur, ce qui permet d’utiliser une désignation plus pertinente que le vrai nom du champ (t.champ.zorglub.3) puisqu’on a droit à tous les caractères (256 maxi).C’est aussi très facile à utiliser (voir l’exemple d’Alex) avec un bouton “Imprimer”, “Enregistrer”, etc.
:Smiley15:
* Il y a des exemples de scripts ultra-simples ci-joints, mais plus il est simple moins on a de maîtrise sur l’alerte utilisateur, le nom du champ, ce que se passe ensuite, etc.
[attachment deleted by admin]
25 février 2013 à 08:13 #54676jsamica
MembreSalut Merlin,
Mille merci :bravo: :Smiley00:Eh oui effectivement tu viens de voir pkoi je :mur:
Je regarde tt ça, mais en cas c super
encore merci:Smiley03:
25 février 2013 à 16:58 #54677jsamica
MembreSalut tt le monde,
Suite aux retours de Merlin, voici mon codeCode:var RequiredFields = new Array(7);
RequiredFields[0] = “date”;
RequiredFields[1] = “nom”;
RequiredFields[2] = “agence”;
RequiredFields[3] = “mail”;
RequiredFields[4] = “duree”;
RequiredFields[5] = “naf”;
RequiredFields[6] = “siret”;var AlertMsg = new Array(7);
AlertMsg[0] = “Veuillez remplir le champ Date”;
AlertMsg[1] = “Veuillez remplir le champ Nom”;
AlertMsg[2] = “Veuillez remplir le champ Agence”;
AlertMsg[3] = “Veuillez remplir le champ Adresse Mail”;
AlertMsg[4] = “Veuillez remplir le champ Durée du contrat”;
AlertMsg[5] = “Veuillez remplir le champ Code NAF”;
AlertMsg[6] = “Veuillez remplir le champ Code SIRET”;var bSuccess=true
var emptyTest=/^s*$/;
var fieldCount=RequiredFields.length
var fld=0;
for(var i=0;i{
fld=this.getField(RequiredFields);
if(emptyTest.test(fld.value))
{
bSuccess=false;
app.alert(AlertMsg);
fld.setFocus();
break;
}
}if(bSuccess=true);
var fTo = this.getField(“adresse”);
var fSubject = this.getField(“concatobjet”);
var fBody = this.getField(“concat”);
this.mailDoc(true, fTo.value, “”, “”, fSubject.value, fBody.value);Il fonctionne plutôt bien, un message indique si un champ n’est pas rempli, cependant après avoir cliqué sur ok dans la fenêtre, il ouvre quand même un mail pour envoi. (ci joint un exemple)
Autre dysfonctionnement si rien n’est rentré il indique que le premier champs est vide, mais pareil lance la fenetre mailDocQui à une idée, pour ajouter un bout de code permettant de bloquer l’ouverture du mailDoc si un champs n’est pas rempli ?
Merci
:bonjour:[attachment deleted by admin]
25 février 2013 à 17:36 #54678Merlin
Maître des clésC’est l’instruction break; qui n’a pas l’air de fonctionner, mais on s’en fiche : même principe que ci-dessus, j’ai découpé le script entre l’action Souris-entrée et l’action Souris-enfoncée…
Javapa me compliquer la vie !Exemple ci-joint.
:Smiley03:[attachment deleted by admin]
26 février 2013 à 08:20 #54679jsamica
MembreSalut Merlin,
Super merci, cependant juste un petit problème que je retrouvais aussi dans tes exemples.
Le fenêtre d’avertissement “veuillez remplir le champs…” s’affiche en boucle ! c’est quasi inutilisable
:Smiley02:Allez je regarde de mon coté, on est sur le bon chemin ! :extra:
:priere::Smiley03:
26 février 2013 à 10:12 #54680Merlin
Maître des clésDisons que cette méthode impose d’utiliser un bouton plus petit et judicieusement placé à l’autre bout de la page…
:geek:26 février 2013 à 14:53 #54681jsamica
Membreje pense qu’on doit pouvoir l’optimiser quand même ce fichu script. :oh:
J’ai vais essayer de voir de mon coté, sinon un développeur Javascript du forum peut-il jeter un oeil ? :idee:
Merci.
:bonjour:26 février 2013 à 15:26 #54682Merlin
Maître des clésEn fait c’est juste après break; que ça ne va pas :
Il y a un problème d’égalité, plus une condition if non suivie d’accolades et immédiatement stoppée (le point-virgule) :
if(bSuccess=true);
var fTo = this.getField(“mail”);
var fSubject = this.getField(“concatobjet”);
var fBody = this.getField(“concat”);
this.mailDoc(true, fTo.value, “”, “”, fSubject.value, fBody.value);Que j’ai corrigé ainsi :
if(bSuccess==true) {
var fTo = this.getField(“mail”);
var fSubject = this.getField(“concatobjet”);
var fBody = this.getField(“concat”);
this.mailDoc(true, fTo.value, “”, “”, fSubject.value, fBody.value);
}Ci-joint.
:Smiley15:
[attachment deleted by admin]
26 février 2013 à 15:42 #54683jsamica
MembreYes effectivement c’était bien ça !!
ça marche super maintenant. :bravo: :extra:Mille merci
:geek:28 février 2013 à 17:08 #54684alex
ParticipantPour les paresseux (comme moi) le script ci-dessous liste lui-même les champs obligatoires, fait le même test que vous et envoie les données
console.clear();
var bSuccess=true;
var emptyTest=/^s*$/;
for(var i=0;i{
nameField=this.getNthFieldName(i);
fld=this.getField(nameField);
if(fld.type==”text”|fld.type==”checkbox”|fld.type==”combobox”)
{
if(fld.required)
{
console.println(“Analyse champ “+nameField);
if(emptyTest.test(fld.value))
{
bSuccess=false;
AlertMsg=”Veuillez remplir le champ “”+nameField+”””;
app.alert(AlertMsg,1);
fld.setFocus();
}
}
}
}
if(bSuccess)
{
var fTo = this.getField(“mail”);
var fSubject = this.getField(“concatobjet”);
var fBody = this.getField(“concat”);
this.mailDoc(true, fTo.value, “”, “”, fSubject.value, fBody.value);
}28 février 2013 à 18:32 #54685Merlin
Maître des clésAdopté !
:bravo:1 mars 2013 à 08:20 #54686jsamica
MembreSalut,
C’est magnifique :bravo: !!!!
grand merci :extra:Je vais tester ça très vite
:bonjour:
5 mars 2013 à 19:04 #54687Whatever
MembrePour les paresseux (comme moi) le script ci-dessous liste lui-même les champs obligatoires, fait le même test que vous et envoie les données
console.clear();
var bSuccess=true;
var emptyTest=/^s*$/;
for(var i=0;i{
nameField=this.getNthFieldName(i);
fld=this.getField(nameField);
if(fld.type==”text”|fld.type==”checkbox”|fld.type==”combobox”)
{
if(fld.required)
{
console.println(“Analyse champ “+nameField);
if(emptyTest.test(fld.value))
{
bSuccess=false;
AlertMsg=”Veuillez remplir le champ “”+nameField+”””;
app.alert(AlertMsg,1);
fld.setFocus();
}
}
}
}
if(bSuccess)
{
var fTo = this.getField(“mail”);
var fSubject = this.getField(“concatobjet”);
var fBody = this.getField(“concat”);
this.mailDoc(true, fTo.value, “”, “”, fSubject.value, fBody.value);
}Bonjour, je suis tombé sur ce site par hasard, mais il y contient beaucoup d’information pertinentes.
J’ai testé le script ci-dessus et il fonctionne à merveille. Maintenant, est-ce possible d’afficher le “tooltip” plutôt que le nom du champ? Je vous en serait très reconnaissant.
6 mars 2013 à 08:17 #54688jsamica
MembreBonjour à tous,
Ouai effectivement ce serait le cerise sur la gâteau.
:geek:
6 mars 2013 à 09:55 #54689Merlin
Maître des clésest-ce possible d’afficher le “tooltip” plutôt que le nom du champ?
C’est comme ça que fonctionne l’exemple FormContact_obligatoire.pdf que j’ai fourni dans ce message : http://abracadabrapdf.net/forum/index.php/topic,1960.msg10002.html#msg10002
:bonjour:
12 juin 2013 à 17:32 #54690club3dtext
MembreBonjour à vous,
Je sais que déjà c’est un sujet considéré résolu sur le forum, considérant ce script de vérification de champ ci-dessous, quelqu’un pourait-il me donner un exemple en piece jointe, s’il vous plaît ? Car je n’y arrive pas tout seul.
Script tiré de cette pièce jointe : display_a_message_if_required_fields_are_blank.pdfvar requiredFields = new Array();
// loop through fields
for (var i = 0; i < this.numFields; i++){
// test for required field and if there is no value for the field
var fName = this.getNthFieldName(i);
if (this.getField(fName).required & this.getField(fName).value == ”){
// add required field name to array of required field names
requiredFields[requiredFields.length] = fName;
}
}
var error = “Please complete the following fields: nn”;
for (j=0; j < requiredFields.length; j++){
if (requiredFields[j].value == null){
error = error + requiredFields[j] + ‘n’;
}
}
if (requiredFields.length > 0)
app.alert(error);Merci.
[attachment deleted by admin]
13 juin 2013 à 07:46 #54691jsamica
MembreBonjour Club3dtext,
Désolé j’ai pas le temps de te concocter un exemple cependant voici un script que j’utilise dans un formulaire et qui fonctionne bien.
Il se place dans le bouton d’envoi du formulaireCode:var RequiredFields = new Array(3);
RequiredFields[0] = “champs1”;
RequiredFields[1] = “champs2”;
RequiredFields[2] = “champs3”;var AlertMsg = new Array(3);
AlertMsg[0] = “Veuillez remplir le champ “champs1″”;
AlertMsg[1] = “Veuillez remplir le champ “champs2 “”;
AlertMsg[2] = “Veuillez remplir le champ “champs3″”;var bSuccess=true;
var emptyTest=/^s*$/;
var fieldCount=RequiredFields.length
var fld=0;
for(var i=0;i{
fld=this.getField(RequiredFields);
if(emptyTest.test(fld.value))
{
bSuccess=false;
app.alert(AlertMsg);
fld.setFocus();
break;
}
}if(bSuccess==true)
{var fTo = this.getField(“to”);
var fSubject = this.getField(“objet”);
var fBody = this.getField(“corps”);
this.mailDoc(true, fTo.value, “”, “”, fSubject.value, fBody.value);}En espérant que cela t’aide
Bonne continuation :Smiley03:13 juin 2013 à 12:05 #54692club3dtext
MembreBonjour ! Je tiens à te remercier jsamica pour la réponse rapide, je vais essayer de voir ce que je peux faire et je te dirai le resultat du test. Mais laisse moi te dire pour l’autre code trouvé du fichier display_a_message_if_required_fi elds_are_blank.pdf, si possible essaie de me concocter un exemple en pièce parce que je n’arrive pas à l’interpréter.
13 juin 2013 à 12:53 #54693jsamica
Membrevoici un petit exemple en pj
Bon courage
:bonjour:[attachment deleted by admin]
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.