Descriere:Autosubmit in x secunde
Download:Nu necesita
Autor:Anonim
Sursa (Link-ul oficial): Propria parere:Util.
Tutorialul:
Acest tutorial prezintă o modalitate prin care datele unui formular vor fi transmise către action-ul acestuia într-un anumit interval de timp.
Pentru început am să exemplific un posibil caz în care putem folosi codul din acest tutorial.
Presupunem că avem de făcut o pagină în care este afişată o întrebare grilă cu x variante de răspuns şi un buton "Răspunde la întrebare". Utilizatorul trebuie să răspundă la acea întrebare într-un anumit interval de timp (să zicem 10 secunde). După expirarea celor 10 secunde, browserul va face automat submit (asta în cazul în care utilizatorul nu a apăsat încă pe butonul "Răspunde la întrebare").
Pentru a realiza acestă pagină şi pentru ca aceasta să răspundă cerinţelor noastre vom folosi cod JavaScript şi PHP.
Pagina temp.php
Cod:
Cod: Selectaţi tot
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Tutorial</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" language="JavaScript">
function data(valoare) {
valoare--;
var numar_zile=Math.floor(valoare/86400);
var secunde_ramase_pentru_ore= valoare % 86400;
var numar_ore=Math.floor(secunde_ramase_pentru_ore /3600);
var secunde_ramase_pentru_minute=secunde_ramase_pentru_ore % 3600;
var numar_de_minute=Math.floor(secunde_ramase_pentru_minute/60);
var numar_de_secunde=secunde_ramase_pentru_minute % 60;
var unitate_zi=" zile ";
var unitate_ora=" ore ";
var unitate_minut=" minute ";
var unitate_secunda=" secunde";
if(numar_zile==1) {
unitate_zi=" zi ";
}
if(numar_ore==1) {
unitate_ora=" ora ";
}
if(numar_de_minute==1) {
unitate_minut=" minut ";
}
if(numar_de_secunde==1) {
unitate_secunda=" secunda";
}
window.status=numar_zile+""+unitate_zi+""+numar_ore+""+unitate_ora+""+
numar_de_minute+""+unitate_minut+""+numar_de_secunde+""+unitate_secunda;
if(valoare<=0) {
document.formular.submit();
}
setTimeout("data("+valoare+")",1000);
}
</script>
</head>
<body <?php if(!isset($_GET['auto_submit'])) { echo 'onLoad="data(10)"'; }?> >
<form method="get" name="formular" action="tmp.php">
<table align="center" width="30%" cellpadding="1" cellspacing="2" border="1">
<tr>
<td>
Intrebare:<br />
Ratza impunge?
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="raspuns[]" value="da">Da! :D
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="raspuns[]" value="nu">Nu!
</td>
</tr>
<tr>
<td>
<input type="hidden" name="auto_submit" value="1">
<input type="submit" name="raspunde" value="Raspunde la intrebare">
</td>
</tr>
</table>
</form>
</body>
</html>
Cod:
Cod: Selectaţi tot
<script type="text/javascript" language="JavaScript">
function data(valoare) {
// se transmite ca parametru numarul de secunde ramase pana la submit
valoare-- ;
// numarul de secunde ramas pana la autosubmit este decrementat cu o unitate
var numar_zile=Math.floor(valoare/86400);
// se calculeaza numarul de zile ramase
var secunde_ramase_pentru_ore= valoare % 86400;
var numar_ore=Math.floor(secunde_ramase_pentru_ore /3600);
// se calculeaza numarul de ore ramase
var secunde_ramase_pentru_minute=secunde_ramase_pentru_ore % 3600;
var numar_de_minute=Math.floor(secunde_ramase_pentru_minute/60);
// se calculeaza numarul de minute ramase
var numar_de_secunde=secunde_ramase_pentru_minute % 60;
// se calculeaza numarul de secunde ramase
var unitate_zi=" zile ";
var unitate_ora=" ore ";
var unitate_minut=" minute ";
var unitate_secunda=" secunde";
if(numar_zile==1) {
unitate_zi=" zi ";
}
if(numar_ore==1) {
unitate_ora=" ora ";
}
if(numar_de_minute==1) {
unitate_minut=" minut ";
}
if(numar_de_secunde==1) {
unitate_secunda=" secunda";
}
window.status=numar_zile+""+unitate_zi+""+numar_ore+""+unitate_ora+""+
numar_de_minute+""+unitate_minut+""+numar_de_secunde+""+unitate_secunda;
// se afiseaza in status bar timpul ramas pana la autosubmit
if(valoare<=0) {
// daca numarul de secunde ramase este mai mic sau egal cu 0 se face submit
document.formular.submit();
}
setTimeout("data("+valoare+")",1000);
// se autoapeleaza functia data odata pe secunda – atentie 1000
//reprezinta milisecundele (1s=1000milisecunde) A NU SE MODIFICA ACEASTA VALOARE
}
</script>Cod:
Cod: Selectaţi tot
<?php
if(!isset($_GET['auto_submit'])){ echo 'onLoad="data(10)"'; }
// atat timp cat nu este transmis $_GET['auto_submit'] - browserul va apela JavaScriptul.
// 10 reprezinta numarul de secunde pana la autosubmit.
// Puteti incerca orice alta valoare intreaga mai mare ca 0.
// In cazul in care parametrul functiei este mai mic sau egal cu 0,
// odata cu incarcarea paginii se va face autosubmit.
?>Observaţie!
PENTRU UTILIZATORII FIREFOX!!! Activaţi CHANGE STATUS BAR TEXT din TOOLS -> OPTIONS -> CONTENT -> ADVANCED (cel din dreptul lui ENABLE JAVASCRIPT) -> check CHANGE STATUS BAR TEXT.
