Avatar billede peikba Nybegynder
08. maj 2004 - 11:06 Der er 15 kommentarer og
1 løsning

Fra til tid i inputbox

Jeg har lavet følgende, det skal beregne antal minutter mellem frakl og tilkl, men det virker ikke, nogen forslag ?

<script type="text/JavaScript">
function calc(ObjForm) {
    p1 = ObjForm.Frakl.value;
    p2 = ObjForm.Tilkl.value;
    ObjForm.AntalTimer.value = <%=datediff("n",p1,p2)%>;
    }
</script>

<table><tr>
    <td width=50><input type="text" name="Frakl"></td>
    <td width=50><input type="text" name="Tilkl" onblur="calc(this.form)"></td>
  </tr>
  <tr>
    <td><input type="text" name="AntalTimer" readonly></td>
  </tr>
  </table>
</form>
Avatar billede Slettet bruger
08. maj 2004 - 11:13 #1
det kan du ikke med asp, da det er serverside (det bliver eksekveret på serveren).. du kan derimod gøre det med javascript.

<script type="text/JavaScript">
function calc(ObjForm) {
    p1 = ObjForm.Frakl.value;
    p2 = ObjForm.Tilkl.value;
    ObjForm.AntalTimer.value = p2 - p1;
    }
</script>

<table><tr>
    <td width=50><input type="text" name="Frakl"></td>
    <td width=50><input type="text" name="Tilkl" onblur="calc(this.form)"></td>
  </tr>
  <tr>
    <td><input type="text" name="AntalTimer" readonly></td>
  </tr>
  </table>
</form>
Avatar billede Slettet bruger
08. maj 2004 - 11:22 #2
jeg har rettet i det, så det er kommet til at virke:

<script type="text/JavaScript">
function calc(ObjForm) {
    var p1,p2;
    p1 = document.getElementById("Frakl").value;
    p2 = document.getElementById("Tilkl").value;
    document.getElementById("AntalTimer").value = p2 - p1;
}
</script>
<form>
<table><tr>
    <td width=50><input type="text" name="Frakl" onblur="calc();"></td>
    <td width=50><input type="text" name="Tilkl" onblur="calc();"></td>
  </tr>
  <tr>
    <td><input type="text" name="AntalTimer" readonly></td>
  </tr>
  </table>
</form>

så skal du have nogle dato-handlere.. ved ikke, hvordan du har tænkt dig at skrive klokkesletne...
Avatar billede Slettet bruger
08. maj 2004 - 11:26 #3
alternativt kan du få siden til at submitte:

<form method='post'>
<table><tr>
    <td width=50><input type="text" name="Frakl" value='<%=request.form("Frakl")%>' onblur="this.form.submit();"></td>
    <td width=50><input type="text" name="Tilkl" value='<%=request.form("Tilkl")%>' onblur="this.form.submit();"></td>
  </tr>
  <tr>
    <td><input type="text" name="AntalTimer" readonly value='<%=datediff("n",request.form("Frakl"),request.form("Tilkl"))%>'></td>
  </tr>
  </table>
</form>
Avatar billede peikba Nybegynder
08. maj 2004 - 11:32 #4
Tak for et hurtigt svar,
men kunne godt tænke mig at formatet på frakl og tilkl var tt:mm,
det var derfor at jeg forsøgte med datediff kommandoen.
ellers vil 1630-0745 blive helt ude i skoven
Avatar billede Slettet bruger
08. maj 2004 - 11:49 #5
dette script går ud fra, at det timetal til venstre er før det til højre.. hvis der f.eks. sår 1000 til venste, og der står 0900 til højre, vil den skrive 23 (timer)..

<script type="text/JavaScript">
function calc(ObjForm) {
    var p1,p2,result;
    p1 = document.getElementById("Frakl").value;
    p2 = document.getElementById("Tilkl").value;
    result = p2 - p1;
    if(result < 0){
        result = result + 2400;
    }
    result =  Math.floor(result / 100);
    document.getElementById("AntalTimer").value = result;
}
</script>
<form>
<table><tr>
    <td width=50><input type="text" name="Frakl" onblur="calc();"></td>
    <td width=50><input type="text" name="Tilkl" onblur="calc();"></td>
  </tr>
  <tr>
    <td><input type="text" name="AntalTimer" readonly></td>
  </tr>
  </table>
</form>
Avatar billede peikba Nybegynder
08. maj 2004 - 11:59 #6
Den giver bare 0 :(

og den forrige virker slet ikke :'(
Avatar billede Slettet bruger
08. maj 2004 - 12:00 #7
virker fint her.. du skal huske at klokkeslettene er mmss..
Avatar billede Slettet bruger
08. maj 2004 - 12:01 #8
jeg smutter.. men du kan jo altid spørge om noget.. kan svare på det i morgen, hvis ikke andre skriver..
Avatar billede peikba Nybegynder
08. maj 2004 - 12:02 #9
Ok tak for hjælpen
Avatar billede Slettet bruger
09. maj 2004 - 14:26 #10
fik du det til at virke??
Avatar billede peikba Nybegynder
09. maj 2004 - 23:46 #11
Nej Desværre, men jeg gik lige uden om
der var nok andet at gå igang med.

Men problemet er stadig. Hvis jeg vil taste
fra 0745 til 1630 hvordan kan jeg så i javascript
lave en beregning på den mellemliggende tid
i VB ville jeg skrive noget i stil med:

FraTim = left(request.form("Frakl"),2)
FraMin = right(request.form("Frakl"),2)

TilTim = left(request.form("Tilkl"),2)
TilMin = right(request.form("Tilkl"),2)

ResTim = cDbl(TilTim)-cDbl(FraTim)
ResTim = ResTim + (((cDbl(TilMin)/60)*100)-((cDbl(FraMin)/60)*100)/100)
Avatar billede Slettet bruger
10. maj 2004 - 11:00 #12
det virker her med min kommentar fra 08/05-2004 11:49:36.. er det den, du bruger??
Avatar billede peikba Nybegynder
17. maj 2004 - 22:43 #13
Hej igen

Jeg kan ikke forstå, hvordan du kan få et decimaltal ud af
din math.floor kommando.

Afrunder den ikke til heltal ?
Avatar billede Slettet bruger
18. maj 2004 - 17:09 #14
ok.. troede du ville have hele antal timer.. så skal Math.floor bare fjernes sådan her..

<script type="text/JavaScript">
function calc(ObjForm) {
    var p1,p2,result;
    p1 = document.getElementById("Frakl").value;
    p2 = document.getElementById("Tilkl").value;
    result = p2 - p1;
    if(result < 0){
        result = result + 2400;
    }
    result =  result / 100;
    document.getElementById("AntalTimer").value = result;
}
</script>
<form>
<table><tr>
    <td width=50><input type="text" name="Frakl" onblur="calc();"></td>
    <td width=50><input type="text" name="Tilkl" onblur="calc();"></td>
  </tr>
  <tr>
    <td><input type="text" name="AntalTimer" readonly></td>
  </tr>
  </table>
</form>
Avatar billede peikba Nybegynder
24. maj 2004 - 21:12 #15
Hej igen

Jeg tror du misforstår mig.
Jeg vil have at en ½ time dvs 30 min skal
laves om til 0,5 time osv.

Jeg har løst problemet på denne måde
(og det kan nok gøres mere elegant :-) :

function calc() {
    var p1,p2,t1,t2,m1,m2,result,res1,res2
    p1 = document.getElementById("Frakl").value;
    p2 = document.getElementById("Tilkl").value;
    if (p1.indexOf(":")!=-1 || p2.indexOf(":")!=-1) {
      alert("Tid skal indtastes som TTMM");
      document.getElementById("Frakl").value="";
      document.getElementById("Tilkl").value="";
    }
    else {
      if(p2>p1) {
        t1=p1.substring(0,2);
        m1=p1.substring(2,4);
        t2=p2.substring(0,2);
        m2=p2.substring(2,4);
        result=t2-t1;
        res2=((m2/60)*100);
        res1=((m1/60)*100);
        result = result + ((res2 - res1)/100);
        document.getElementById("AntalTimer").value = result;
      }
    }
  }
Avatar billede peikba Nybegynder
06. oktober 2004 - 23:10 #16
Lukker
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
Kurser inden for grundlæggende programmering

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