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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    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
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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 averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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 averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 55
    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 Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 55
    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.

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