Autor Zpráva
Bildr
Profil
Zdravím, nikdy jsem v JS netvořil a narazil jsem na problém, který bez něj asi nevyřeším. Chvíli jsem zkoušel něco patlat z ukázkových zdojáků, ale nefuní to. Jde o to, že návštěvník má k dispozici nějakou skupinu formulářů, kterými postupně prochází (navazují na sebe), ale měl by mít nějaký časový limit na vyplnění (a to všech formulářů dohromady). Má idea byla asi taková, že na prvním formuláři bych si do hidden pole schoval čas v sekundách, který by uživatel měl na ono výše zmíněné vyplnění. Při odeslání by se pak tato hodnota postupně předávala z formuláře na formulář, ale zároveň by se i každou vteřinu dekrementovala o jedničku a pokud by jeho hodnota byla nulová nebo záporná, tak by otevřela stránka s vyhodnocením.

Toto jsem zplodil během svého prvního javascriptového pokusu

<span id="deadlineshow"></span>

<script>


function deadline(){
	var SecCounter = document.getElementById('deadlinedata');
	SecCounter.value() = SecCounter.value()-1;
	var aktualniCas = "Zbývá " + SecCounter.value() + " vteřin";
	window.document.getElementById("deadlineshow").innerHTML = aktualniCas;

	if(SecCounter.value() <= 0) // odeslat k vyhodnocení
	
}

deadline(); 
window.setInterval("deadline()", 1000); 

</script>

<form id="form">
  <input type="hidden" id="deadlinedata" name="deadlinedata" value="100">
  <input type="submit" id="submit" name="submit" value="Odeslat">
</form>

Mohl by mi někdo poradit, proč se to nedekrementuje a dále jak otevřít při vypršení počítadla stránku s vyhodnocením? (potřebná data budou v cookies).
peta
Profil
"proč se to nedekrementuje" ?
SecCounter.value() = SecCounter.value()-1;
... protoze je to tam nastavene, akorat je to chybne zapsane, takze se to asi nedekrementuje
jakpsatweb - javascript - priklady - formulare

"jak otevřít při vypršení počítadla stránku s vyhodnocením"
if(SecCounter.value() <= 0) // odeslat k vyhodnocení
{ nejaka funkce pro otevreni}
jestlize to bude v action toho romulare, tak by stacilo
document.getElementById('form').submit()
jinak ta funkce by musela byt presmerovani
window.location.href
jakpsatweb - javascript - objekt window
Mike8748
Profil
SecCounter.value neni funkce ale promena, takze tam nemaj ty zavorky co delat
Bildr
Profil
Díky za rady. Takže jsem upravil zdrojak, z metody je proměnná (nebo jak tomu u JS říkáte), ale stále to jednak neodpočítává druhak se sestavený string nezobrazuje ve spanu. Takže současná verze vypadá takto:
<span id="deadlineshow"></span>

<script>


function deadline(){
	var SecCounter = document.getElementById("deadlinedata");
	SecCounter.value = SecCounter.value-1;
	var aktualniCas = "Zbývá " + SecCounter.value() + " vteřin";
	window.document.getElementById("deadlineshow").innerHTML = aktualniCas;
	
}

deadline(); 
window.setInterval("deadline()", 1000); 

</script>

<form id="form">
  <input type="text" id="deadlinedata" name="deadlinedata" value="100">
  <input type="submit" id="submit" name="submit" value="Odeslat">
</form>

Nevidíte v tom někdo ještě krpu?
Bildr
Profil
oprava 3. řádku fce
var aktualniCas = "Zbývá " + SecCounter.value + " vteřin";

zkopíroval jsem špatnou verzi
Bildr
Profil
Třeba se někomu bude hodit zdroják:
<script>

function decrement() {

   	--window.document.otazka.pocitadlo.value;
        var stav = window.document.otazka.pocitadlo.value;	

	if(stav <= 0) {

		window.document.getElementById("cas").innerHTML = "Čas vypršel!";
	        window.document.getElementById("otazka").submit(); 
	} 

	else if(stav <= 59) { 
		
		window.document.getElementById("cas").innerHTML = "Zbývá " + stav  + " vteřin.";
        } 

	else if(stav <= 239) { 

		stav /= 60; 
		window.document.getElementById("cas").innerHTML = "Zbývají " + parseInt(stav+1)  + " minuty."; 	
	}

	else  { 
		stav /= 60; window.document.getElementById("cas").innerHTML = "Zbývá " + parseInt(stav+1)  + " minut."; 
		
	}
}

window.setTimeout("decrement()", 0);
window.setInterval("decrement()", 1000); 

</script>

<span id="cas"></span>

<form name="otazka" id="otazka" action="cil.html">
<input type="hidden" name="pocitadlo" value="250">
</form>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0