Annonces


#1 05/05/07 17:15:57

Malcolm
4d0p73z 14 1337 A7717ud3 !
Equipe Modérateurs
Lieu: unreal://Index.ut2:31337
OS: Linux Debian
Date d'inscription: 03/03/04
Messages: 3435
Site web

Soumission de formulaire via Javascript

Hello,
je suis à court d'idées ...

j'ai sur un site une page de QCM (un formulaire de checkbox) et je voudrais lui mettre une soumission en javascript. Celle-ci est purement optionnelle (le fait que JS ne soit pas présent/exécuté n'annulera pas la soumission dudit formulaire) c'est juste pour réaliser une soumission automatique du formulaire après un temps défini : 15 minutes. (sinon l'utilisateur a tout le temps qu'il veut ... - idée : se rapprocher des conditions d'examen)

J'ai bien réussi à mettre un compte à rebours en javascript, celui-ci marche et dans le script que j'ai trouvé, l'action effectuée est une redirection : document.location.href = "page.php"; et testé sur mon site, ça marche.

moi je voudrais changer ça par un submit de formulaire, j'ai testé ça :

Code:

//document.getElementById('form_qcm').submit();
//setTimeout(function(){form_qcm.submit();},0);
document.forms['form_qcm'].submit();

mais soit on me dit que form_qcm n'a pas d'attribut (console JS de firefox) soit document.forms.form_qcm.submit is not a function ...

mon formulaire est comme suit :

Code:

  <form id="form_qcm" name="form_qcm" method="post" action="qcm-correct.html">
  <fieldset><legend>Question 1</legend>

  <h5>blabla</h5>
  <ul>
    <li><input type="checkbox" id="q_16_p_1" name="q_16_p_1" value="1" /><label for="..."></label></li>
    ....

  </form>

si qqn a une idée, je suis preneur, merci !


La nature est bien faite : quand mon nez est bouché, ce sont mes pieds qui sentent ...
http://zeffklop.free.fr/singe.gif FYI RTFM ASAP => Tux : La Légende <=
http://www.php-astux.info/images/newslettux2-468x60.pngNewsletTux

Grand défenseur de la Langue Française tongue

TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#2 07/05/07 15:26:18

Malcolm
4d0p73z 14 1337 A7717ud3 !
Equipe Modérateurs
Lieu: unreal://Index.ut2:31337
OS: Linux Debian
Date d'inscription: 03/03/04
Messages: 3435
Site web

Re: Soumission de formulaire via Javascript

personne n'a d'idée ? frown


La nature est bien faite : quand mon nez est bouché, ce sont mes pieds qui sentent ...
http://zeffklop.free.fr/singe.gif FYI RTFM ASAP => Tux : La Légende <=
http://www.php-astux.info/images/newslettux2-468x60.pngNewsletTux

Grand défenseur de la Langue Française tongue

TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#3 07/05/07 19:48:27

Tuxicoman
Nouveau
Lieu: Suisse
OS: Windows 2k/NT/XP
Date d'inscription: 14/03/07
Messages: 44
Envoyer un MP

  Email

Re: Soumission de formulaire via Javascript

Je n'osait rien dire car mon niveau de JS est proche du zero.. Mais si je comprends bien, tu veux qu'après 15 minutes, le formulaire s'envoie automatiquement a moins que l'utilisateur ne click sur "Envoyé" auquel cas, le formulaire serait envoyé directement?

Dans ce cas, je laisserai ton formulaire comme précédement en y ajoutant un bouton qui appellerait la même procédure JS que celle utilisée a la fin de ton compte à rebours.
<input  type="button" onclick="tafonctiondenvoi()" name="btnEnvoyer" value="Envoyer" />

Dernière modification par Tuxicoman (07/05/07 20:10:46)

TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#4 07/05/07 20:22:46

Malcolm
4d0p73z 14 1337 A7717ud3 !
Equipe Modérateurs
Lieu: unreal://Index.ut2:31337
OS: Linux Debian
Date d'inscription: 03/03/04
Messages: 3435
Site web

Re: Soumission de formulaire via Javascript

en fait, pour préciser un peu ma demande (mais merci d'avoir répondu quand même smile) une série de QCM estdonnée aux candidats lors d'un examen et ceux-ci ont 1 minute par QCM. Soit pour l'anatomie de rouen, 15 minutes (puisqu'il y a 15 QCM).
Actuellement, le formulaire peut s'envoyer au bout de 30 secondes tout comme au bout de 2h : rien ne limite le temps de remplissage du formulaire. Pour "corser" un peu la difficulté, je souhaite reproduire ce temps limité.

Il est hors de question de faire une validation 100% en javascript pour une raison d'accessibilité (avec mon souhait, au pire, on perd la limite de temps), le javascript est comme un plus pour donner une nouvelle difficulté.

Je n'osait rien dire car mon niveau de JS est proche du zero.. Mais si je comprends bien, tu veux qu'après 15 minutes, le formulaire s'envoie automatiquement a moins que l'utilisateur ne click sur "Envoyé" auquel cas, le formulaire serait envoyé directement?

jusque là, oui

Dans ce cas, je laisserai ton formulaire comme précédement en y ajoutant un bouton qui appellerait la même procédure JS que celle utilisée a la fin de ton compte à rebours.
<input  type="button" onclick="tafonctiondenvoi()" name="btnEnvoyer" value="Envoyer" />

oui, mais la procédure est un compteur, c.à.d. en permanence exécuté... Puisque toutes les secondes ya un chiffre à changer smile
L'ajout d'un bouton supplémentaire (en supposant que je masque l'autre pour éviter de poser des soucis d'ergonomie) devra valider le formulaire, mais il faudrait alors que toutes les checkboxes soient bloquées ... Pour qu'on ne puisse pas rajouter de réponse "in extremis".
Pourquoi ne pas réfléchir dans cet axe ... je vais voir, merci.


La nature est bien faite : quand mon nez est bouché, ce sont mes pieds qui sentent ...
http://zeffklop.free.fr/singe.gif FYI RTFM ASAP => Tux : La Légende <=
http://www.php-astux.info/images/newslettux2-468x60.pngNewsletTux

Grand défenseur de la Langue Française tongue

TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#5 07/05/07 23:39:08

Tuxicoman
Nouveau
Lieu: Suisse
OS: Windows 2k/NT/XP
Date d'inscription: 14/03/07
Messages: 44
Envoyer un MP

  Email

Re: Soumission de formulaire via Javascript

$ la base, je suis plutot PHP.. Donc tu pourrais tout a fait avoir ton
<input type="submit" name="btnValider" Value="Valider le QCM" />

et un bout de code PHP du style :

<?
  if(isset($_POST['btnValider']))
  {
    //une procédure qui envoie le contenu de ton QCM
  }
?>


Avec cette solution, je suis certain que le gars ne peut pas rajouter une réponse "in extremis" car les valeurs $_POST seront prisent au moment ou le bouton "Valider" sera relaché wink

TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#6 08/05/07 11:03:06

Malcolm
4d0p73z 14 1337 A7717ud3 !
Equipe Modérateurs
Lieu: unreal://Index.ut2:31337
OS: Linux Debian
Date d'inscription: 03/03/04
Messages: 3435
Site web

Re: Soumission de formulaire via Javascript

oui, mais $_POST est coté serveur, et le javascript coté client ... Il faut donc d'abord que l'utilisateur soumette son formulaire avant de pouvoir utiliser un isset($_POST)...


La nature est bien faite : quand mon nez est bouché, ce sont mes pieds qui sentent ...
http://zeffklop.free.fr/singe.gif FYI RTFM ASAP => Tux : La Légende <=
http://www.php-astux.info/images/newslettux2-468x60.pngNewsletTux

Grand défenseur de la Langue Française tongue

TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#7 08/05/07 11:34:50

Ju
ju@jabber.sk
Equipe Admin
Lieu: Boston, Texas
OS: Linux Debian
Date d'inscription: 26/01/04
Messages: 5878
Envoyer un MP

  Email  Site web

Re: Soumission de formulaire via Javascript

Code:

setTimeout("document.getElementById('form_qcm').submit();", 3000);

- contacter un élément HTML par getElementById est ce qu'il y a de mieux actuellement (méthode DOM)
- setTimeout reçoit le code à exécuter comme une chaîne de caractère (tout comme eval)
- le point virgule à la fin est important (également comme eval)
- ici, 3000 pour 3 secondes, 900000 pour 15 minutes
- l'attribut name de ton formulaire ne sert à rien (en XHTML Strict, il est même faux)
- un alert avant le submit serait apprécié je pense ^^



TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#8 08/05/07 16:08:31

Malcolm
4d0p73z 14 1337 A7717ud3 !
Equipe Modérateurs
Lieu: unreal://Index.ut2:31337
OS: Linux Debian
Date d'inscription: 03/03/04
Messages: 3435
Site web

Re: Soumission de formulaire via Javascript

Merci de ta réponse, j'utilise personnellement le document.getElementById mais tu l'as bien vu, cette ligne est mise en commentaire : j'ai testé plusieurs solutions et plusieurs écritures de chaque solution (pour ça que j'ai rajouté le "name" du form).
Mais quelle qu'ait été l'écriture de cette ligne, je n'ai pas réussi à soumettre le formulaire...


La nature est bien faite : quand mon nez est bouché, ce sont mes pieds qui sentent ...
http://zeffklop.free.fr/singe.gif FYI RTFM ASAP => Tux : La Légende <=
http://www.php-astux.info/images/newslettux2-468x60.pngNewsletTux

Grand défenseur de la Langue Française tongue

TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation

#9 08/05/07 23:20:57

Malcolm
4d0p73z 14 1337 A7717ud3 !
Equipe Modérateurs
Lieu: unreal://Index.ut2:31337
OS: Linux Debian
Date d'inscription: 03/03/04
Messages: 3435
Site web

Re: Soumission de formulaire via Javascript

j'ai résolu indirectement mon souci ... A la fin du décompte, je change l'affichage du bouton "corriger" pour le mettre en évidence et je masque via javascript les questions. Les tricheurs pourront toujours enlever le javascript biggrin

J'ai tenté le readonly dynamique comme expliqué sur le blog de Dew mais vu l'heure j'ai pas le courage d'aller trop loin ... ça me laissera le loisir d'améliorer mon bout de code smile


La nature est bien faite : quand mon nez est bouché, ce sont mes pieds qui sentent ...
http://zeffklop.free.fr/singe.gif FYI RTFM ASAP => Tux : La Légende <=
http://www.php-astux.info/images/newslettux2-468x60.pngNewsletTux

Grand défenseur de la Langue Française tongue

TOP Hors ligne

  • Signaler
  • Citer
  • Ajouter à la citation
Actuellement aucun autre membre et 1 invité sur ce topic
Membres : [S'enregistrer]

Pied de page du Forum

Pub hébergeur :


CtrlAltSuppr.com, forums officiels de JSAND partagés avec Geek&Hype

Powered by PunCAS (JSAND) based on PunBB
© Copyright 2002–2005 Rickard Andersson