IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Une histoire de compte à rebours (avec formulaire)


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Une histoire de compte à rebours (avec formulaire)
    Bonjour à tous,

    Je souhaiterai faire un petit compte à rebours qui valide un formulaire à la fin de celui-ci.

    Voilà ce que j'ai fait pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <head>
    <script type="text/javascript">
    	var temps = 5;
    	var tps = temps
    	var x;
    	function Init()	
    	{
    		window.document.getElementById('compteur').value=tps;
    		x = window.setInterval('Decompte()', 1000);
    	}
     
    	function Decompte()	
    	{
    		tps = tps - 1;
    		window.document.getElementById('compteur').value = tps;
    		if(tps == -1)
    		{
    		window.document.getElementById('form').submit();
    		}
    	}	
    	window.onload = Init;
    </script>
    </head>
     
    <form action=test.php name="form" id="form" method=post>
    <input type="text" name="compteur" id="compteur" size="2" readonly="readonly">
    <input type="text" name="rep" id="rep" size="5">
    <INPUT TYPE=submit NAME=Envoyer VALUE="Envoyer">
    </form>
    Le soucis que j'ai est que pour l'instant, un simple appui sur F5 fait redémarrer le compte à rebours.
    Auriez-vous une idée pour remédier à ceci ?

    Merci d'avance,

    Olivier14

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Points : 38
    Points
    38
    Par défaut
    je crains qu'on ne puisses pas y remédier étant donné que javascript s'exécute sur le client, si tu raffraichis il recharge l'application et par conséquent redémarre le compte à rebours en question.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    et si tu ouvres une popup juste pour y coller ta variable ? le f5 ne devrait pas l'affecter ?

    sinon sous IE avec une variable navigator ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Effectivement, ce serai plutôt pour utiliser avec Firefox.
    Si vous voyez une solution à mon problème avec une autre techno que Javascript, je suis preneur.

    Merci d'avance,

    Olivier14

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    avec un cookie ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    et avec plus de détails algorithmique ?

    Merci d'avance,

    Olivier14

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Un vieux code qui trainait dans ma bibli ...

    un fichier js que tu nomme par exemple Gato.js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    //Fonction de retrait des cookies
    function getcook(nom) {
    	var arg=nom+"=";
    	var alen=arg.length;
    	var clen=document.cookie.length;
    	var i=0;
    	while (i<clen) {
    		var j=i+alen;
    		if (document.cookie.substring(i,j)==arg) {
    			var endstr=document.cookie.indexOf (";",j);
    			if (endstr==-1)	{endstr=clen;}
    			return unescape(document.cookie.substring(j, endstr));
                }
    		i=document.cookie.indexOf(" ",i)+1;
            if (i==0) {break;}
    		}
    	return null;
    }
     
    //Fonction de dépot des cookies
    function setcook(nom,valeur) {
    	if (nom!="") {
    		if (valeur!="") {
    			document.cookie=nom+"="+escape(valeur);
    		}
    	}
    }

    la balise dans la page html qui lie le fichier js à la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script language="javascript" src="Gato.js"></script>
    puis (pour stocker un cookie) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script language="javascript">
    	setcook(" nom_du_cookie "," valeur_du_cookie ");
    </script>
    (pour consulter un cookie) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script language="javascript">
    	var cook=getcook(" nom_du_cookie ");
    </script>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Je fais exactement la même chose.

    Ça marche parfaitement bien avec les cookies seulement, l'utlisateur peut , avec son naviguateur préféré, modifier la valeur du cookie...

    J'ai pensé a une variable de session mais ca me parait impossible du fait de l'execution coté serveur et client.

    Une idée ?

    Merci

  9. #9
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    session + ajax

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    oui ça reste la seule solution session + ajax
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Merci de vos réponses

    J'ai mis en place cette solution
    Mais on se confronte a un autre problème : Le visiteur peut désactiver le javascript et ainsi bloquer le compteur.

    voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php session_start();
     
     
    function increment_time($now)
    {
            $_SESSION['yet']=$now;
    }
    require_once('./xajax_core/xajax.inc.php');
    $xajax = new xajax(); //On initialise l'objet xajax
    $xajax->register(XAJAX_FUNCTION, 'increment_time');
    $xajax->processRequest();
    $xajax->printJavascript();
    ?><head>
     
    <script type="text/javascript">
    <?php if(isset($_SESSION['yet'])){?>
    	var temps = <?php echo $_SESSION['yet'];?>;
    <?php }else{?>
    	var temps = 50;
    <?php }?>	
    	var tps = temps;
    	var x;
    	function Init()	
    	{
    		window.document.getElementById('compteur').value=tps;
    		x = window.setInterval('Decompte()', 1000);
    	}
     
    	function Decompte()	
    	{
     
    		tps = tps - 1;
    		window.document.getElementById('compteur').value = tps;
    		xajax_increment_time(tps);
    		if(tps == 0)
    		{
    		window.document.getElementById('form').submit();
    		}
    	}	
    	window.onload = Init;
    </script>
    </head>
     
     
    <form action=test.php name="form" id="form" method=post>
    <input type="text" name="compteur" id="compteur" size="2" readonly="readonly">
    <input type="text" name="rep" id="rep" size="5">
    <INPUT TYPE=submit NAME=Envoyer VALUE="Envoyer">
    </form>
    J'ai pensé à mettre un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Refresh:5 ;url=no_javascript.php");
    à la fin de ma fonction increment_time mais l'ajax ne l'interprète pas.

  12. #12
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    renvoie la variable de session si pas de js

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Mais comment faire pour detecter l'etat activé/désactivé du javascript du client
    pendant le décompte ?

  14. #14
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    noscript

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    J'ai déja utilisé ce code mais ca n'agit qu'au rafraichissement de la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <noscript><meta http-equiv="refresh" content="0;url=./page.php?js=no" /> </noscript>

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    En reformulant ma question,

    Est-il possible de detecter en temps reel (c'est a dire sans avoir a faire de rafraichissement ) si le client a désactivé son javascript ?

    J'ai cherché des sources mais en vain...

  17. #17
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    non pas en temps reel tu ne pourras le faire que lors d'un retour sur le serveur
    tu ne peux pas lancer un test coté serveur si le client n'y vient pas ...

    tu pourrais avoir un ajax qui envoie regulièrement (setInterval) une info à php, et du coup si javascript est desactivé ajax ne fonctionnera plus
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Ok bien recu

    Le questionnaire est pour une formation validante...
    Je vais creuser pour trouver une solution

    Merci a tous

  19. #19
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    tu invalide côté serveur les réponses qui n'ont pas été donné à temps!

Discussions similaires

  1. [débutant] compte à rebours avec changement d'image
    Par ravid87 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/03/2011, 11h41
  2. Compte à rebours avec affichage
    Par shazad dans le forum Débuter
    Réponses: 18
    Dernier message: 11/12/2008, 15h38
  3. Petit compte à rebours avec PHP.
    Par Trinout dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/09/2007, 16h06
  4. Compte à rebours avec Timer
    Par womannosky dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 13/06/2007, 18h33
  5. [MySQL] Une histoire de CHECKBOX dans un formulaire
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/10/2006, 14h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo