Avatar billede jeffe Nybegynder
27. januar 2005 - 14:33 Der er 13 kommentarer og
1 løsning

Timer-script

Jeg bruger dette script:

<script language="JavaScript" type="text/javascript">
    var intervalId;
    var refreshRate = 1000;
    var htmlCounter;
    function countdown_start() {
        htmlCounter = 20;
        countDown();
        intervalId = setInterval("countDown()", refreshRate);
    }
    function countdown_stop() {
        clearInterval(intervalId);
    }
    function countDown() {
        document.form1.c.value=htmlCounter--;
        if(htmlCounter < 0) {
            countdown_stop();
            document.location.href="php/besvarspm.php?spmid=<? echo $spmid; ?>&tid=ja";
        }

    }
</script>


Det bliver sat til et formfelt, der så viser tiden tælle ned fra 20. Hvis tiden løber ud, ryger man til en side med variablen tid=ja på. Meningen er, at man helst inden tiden rinder ud skal have trykket på én af tre knapper. Det hele virker også, men hvis brugerne har en langsom forbindelse eller måske sidder og downloader, kan tiden løbe ud selv om der er mange sekunder tilbage når de rent faktisk trykker.

Jeg søger en måde at skrive det script på, så det overvåger hvornår man klikker på én af de tre submit-knapper, og dermed stopper tiden. Når den stopper tiden, skal den naturligvis og sørge for at folk imens siden så loades ikke kan skifte mening.

Jeg er lidt i tvivl om alt dette kan gøres med JS, men man kunne måske stoppe tiden ved submit og dernæst kalde noget VBS der fjernede de tre knapper og skrev at den loadede i stedet...hvad ved jeg!?

Hvordan skal problemet løses?
Avatar billede roenving Novice
27. januar 2005 - 14:54 #1
<input type="submit" name="submit0" onclick="countdown_stop();this.form.submit1.disabled=true;this.form.submit2.disabled=true;this.disabled=true;">
<input type="submit" name="submit1" onclick="countdown_stop();this.form.submit1.disabled=true;this.form.submit0.disabled=true;this.disabled=true;">
<input type="submit" name="submit2" onclick="countdown_stop();this.form.submit0.disabled=true;this.form.submit2.disabled=true;this.disabled=true;">
Avatar billede jeffe Nybegynder
27. januar 2005 - 15:15 #2
Det ser spændende ud...jeg ser lige om jeg kan finde ud af det... ;)
Avatar billede jeffe Nybegynder
27. januar 2005 - 15:27 #3
Det med tiden virker fint. Herligt. Men hvordan bliver det helt nøjagtigt disabled? - jeg synes stadig jeg kan klikke på dem. Jeg har naturligvis angivet name på alle tre forms og skrevet dem i stedet submit0/1/2...
Avatar billede roenving Novice
27. januar 2005 - 15:36 #4
3 forme ?-)

Hvorfor har du 3 forme, hvorfor ikke bare nøjes med en, og så via onclicken på submit-knapperne sørge for at action er den rette ?-)
Avatar billede jeffe Nybegynder
27. januar 2005 - 15:57 #5
Så skal jeg lige lære lidt html...
Alt efter hvilken submit der bruges skal en postvariabel jo sættes til noget forskelligt. Hvordan gøres det? :/
Avatar billede jeffe Nybegynder
27. januar 2005 - 15:59 #6
Nåh, så du mener jeg skal lave en get-variabel i stedet, med JS? - er det bare at sætte onclick= document.location osv. ?
Avatar billede roenving Novice
27. januar 2005 - 16:04 #7
Næh, men to (tre) forskellige muligheder:

-- enten sætter du et hidden felt til noget forskelligt efter hvilken submit, der trykkes på eller ændrer action ved det klik ...

-- iøvrigt kan du vel serverside aflæse, hvilken submit, der er klikket på !o]

-- og den helt store fordel kommer så i den kode, du sætter ind i dine onclick-events, for det er ret meget lettere at skrive this.form.submit0 i stedet for at skrive document.form2.submit1 (og næsten umuligt at lave fejl !-)
Avatar billede jeffe Nybegynder
27. januar 2005 - 16:12 #8
Lad os antage at med mine sciprts osv, vil det være lettere at gøre det med tre forms (dvs. ikke ændre noget, derfor) og i stedet bare gøre den halvdumme måde (kan godt se det, vil huske til næste gang).

Kan jeg så ikke bare lave sådan tre her:

<form method="post" name="mulighed3" action="php/besvarspm.php">
  <input type="hidden" value="<? echo $spmid; ?>" name="spmid">
  <input type="hidden" value="3" name="afgivetsvar">
  <button name="spm" type="submit" onclick="countdown_stop();document.mulighed1.spm.disabled=true;document.mulighed1.spm.disabled=true;this.disabled=true;"><? echo $mulighed3; ?></button>
</form>

Dette er jo så for knap tre...Burde det ikke virke (for det synes jeg stdig ikke det gør. Altså tiden stopper, men det er stadig muligt at nå at klikke på et andet felt og dermed ændre resultatet...
Avatar billede jeffe Nybegynder
27. januar 2005 - 16:13 #9
Altså, jeg eftersøger at de bliver 'grayed out', fjernet eller lign...
Avatar billede jeffe Nybegynder
27. januar 2005 - 16:16 #10
Jeg har vist selv fundet noget brugbart nu...
Kigger lige på det!
Avatar billede jeffe Nybegynder
27. januar 2005 - 16:36 #11
Ja, nu virker det. Tak for hjælpen! Smid svar hvis du vil ha' point'ene ;)
Avatar billede roenving Novice
30. januar 2005 - 14:50 #12
Brugte du det ?-)

-- så velbekomme '-)
Avatar billede jeffe Nybegynder
30. januar 2005 - 18:37 #13
Jeg lavede det efter min smag, men det var pga. dine fif at jeg fandt ud af det. Tak !
Avatar billede roenving Novice
31. januar 2005 - 08:07 #14
Så takker jeg for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester