Minuterie après submit
Résolu/Fermé
Brunodurant
Messages postés
13
Date d'inscription
dimanche 14 novembre 2021
Statut
Membre
Dernière intervention
23 août 2022
-
Modifié le 12 févr. 2022 à 21:52
Brunodurant Messages postés 13 Date d'inscription dimanche 14 novembre 2021 Statut Membre Dernière intervention 23 août 2022 - 15 févr. 2022 à 17:55
Brunodurant Messages postés 13 Date d'inscription dimanche 14 novembre 2021 Statut Membre Dernière intervention 23 août 2022 - 15 févr. 2022 à 17:55
4 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
13 févr. 2022 à 12:18
13 févr. 2022 à 12:18
Bonjour,
Tu peux utiliser la fonction JavaScript setInterval() pour exécuter du code à intervalles réguliers, par exemple à chaque seconde, et ainsi réaliser une minuterie/un timer.
https://developer.mozilla.org/en-US/docs/Web/API/setInterval
Un exemple de minuterie/timer :
https://www.xul.fr/ecmascript/settimeout.php
Tu peux utiliser la fonction JavaScript setInterval() pour exécuter du code à intervalles réguliers, par exemple à chaque seconde, et ainsi réaliser une minuterie/un timer.
https://developer.mozilla.org/en-US/docs/Web/API/setInterval
Un exemple de minuterie/timer :
https://www.xul.fr/ecmascript/settimeout.php
Brunodurant
Messages postés
13
Date d'inscription
dimanche 14 novembre 2021
Statut
Membre
Dernière intervention
23 août 2022
15 févr. 2022 à 14:36
15 févr. 2022 à 14:36
Bonjour Pitet
Merci beaucoup.
J'ai appliqué ta solution qui marche super bien. Je bute "juste" sur un truc.
Dans mon projet, chronologiquement", j'aimerai que l'utilisateur saisisse, il clique sur "Envoyer", le décompte commence, et à la fin du décompte, le formulaire est envoyé à page.php
Jusque là j'arrive à tout. Mais lorsque je clique sur "Envoyer" le décompte et l'envoi à la page.php se font en même temps. Je n'arrive pas à faire l'un après l'autre.
Voici mon code:
Je pense que mon erreur est double.
J'ai marqué ceci:
Et donc, ça se déclenche en même temps
Une autre solution à laquelle j'avais pensé :
au lieu d'afficher "TERMINE!", l'idée serait d'envoyer via le lien https://blabla/page.php à la page.php, mais je me suis rendu compte que je ne savais pas le faire.
Est-ce que tu pourrais, peut-être, m'aiguiller ?
Encore merci et à bientôt
Bruno
Merci beaucoup.
J'ai appliqué ta solution qui marche super bien. Je bute "juste" sur un truc.
Dans mon projet, chronologiquement", j'aimerai que l'utilisateur saisisse, il clique sur "Envoyer", le décompte commence, et à la fin du décompte, le formulaire est envoyé à page.php
Jusque là j'arrive à tout. Mais lorsque je clique sur "Envoyer" le décompte et l'envoi à la page.php se font en même temps. Je n'arrive pas à faire l'un après l'autre.
Voici mon code:
<form name="f" action="https://blabla/page.php" method="post" enctype="multipart/form-data" target="_self">
Votre nom: <input type="text" name="nom" id="nom"><br>
Votre prénom: <input type="text" name="prenom" id="prenom"><br>
<input type="button" onclick="start();submit('f')">Envoyer</button>
</form>
<script>
var counter = 10;
var intervalId = null;
function finish(){
clearInterval( intervalId );
document.getElementById( "bip" ).innerHTML = "TERMINE!"; }
function bip(){
counter--;
if ( counter == 0 ) finish();
else {
document.getElementById( "bip" ).innerHTML = counter + " secondes restantes";}}
function start(){
intervalId = setInterval( bip, 1000 );}
</script>
Je pense que mon erreur est double.
J'ai marqué ceci:
onclick="start();submit('f')"
Et donc, ça se déclenche en même temps
Une autre solution à laquelle j'avais pensé :
document.getElementById( "bip" ).innerHTML = "TERMINE!"; }
au lieu d'afficher "TERMINE!", l'idée serait d'envoyer via le lien https://blabla/page.php à la page.php, mais je me suis rendu compte que je ne savais pas le faire.
Est-ce que tu pourrais, peut-être, m'aiguiller ?
Encore merci et à bientôt
Bruno
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
15 févr. 2022 à 16:57
15 févr. 2022 à 16:57
Tu y était presque, il faut juste soumettre le formulaire dans ta fonction finish().
Pour faire cela, le plus simple est d'ajouter un identifiant sur la balise form afin de pouvoir la récupérer en js via getElementById() puis appeler la fonction submit() :
Au passage, attention à la syntaxe html. Le bouton du formulaire doit être soit une balise input, soit une balise button, mais pas un mélange des deux ;)
Pour faire cela, le plus simple est d'ajouter un identifiant sur la balise form afin de pouvoir la récupérer en js via getElementById() puis appeler la fonction submit() :
<form id="form-blabla" name="f" action="https://blabla/page.php" method="post" enctype="multipart/form-data" target="_self"> Votre nom: <input type="text" name="nom" id="nom"><br> Votre prénom: <input type="text" name="prenom" id="prenom"><br> <input type="button" onclick="start();" value="Envoyer"> </form> <div id="bip"></div>
var counter = 10; var intervalId = null; function start(){ intervalId = setInterval(bip, 1000); } function finish(){ clearInterval(intervalId); document.getElementById("bip").innerHTML = "TERMINE!"; document.getElementById("form-blabla").submit(); } function bip(){ counter--; if (counter == 0) { finish(); } else { document.getElementById("bip").innerHTML = counter + " secondes restantes"; } }
Au passage, attention à la syntaxe html. Le bouton du formulaire doit être soit une balise input, soit une balise button, mais pas un mélange des deux ;)
<form> <button type="button" onclick="start();">Envoyer</button> <!-- ou --> <input type="button" onclick="start();" value="Envoyer"> </form>
Brunodurant
Messages postés
13
Date d'inscription
dimanche 14 novembre 2021
Statut
Membre
Dernière intervention
23 août 2022
15 févr. 2022 à 17:55
15 févr. 2022 à 17:55
C'est génial, Pitet, ça marche super bien.
Merci beaucoup pour ton aide et tes conseils.
A bientôt
Bruno
Merci beaucoup pour ton aide et tes conseils.
A bientôt
Bruno