Avatar billede brian_d Nybegynder
14. juni 2004 - 11:52 Der er 5 kommentarer og
1 løsning

Byttepenge beregning

Hvem kan lave et script der beregner byttepengene i nedenstående kode

hvis man ændrer i dankort beløbet skal kontant beløbet selfølgelig også ændre sig

total og tilbage felterne skal være låste felter


<html>
<head>
    <script language="JavaScript" type="text/javascript">
function byttepenge() {
document.forms.frm_kasse.dankort= ???
document.forms.frm_kasse.kontant= ???
document.forms.frm_kasse.tilbage= ???
}
</script>
</head>
<body>
    <form id="frm_kasse">
        <span><label>total</label></span>
        <input id="total" type="text" value="6553,23" />
        <br />
        <span><label>dankort</label></span>
        <input id="dankort" onblur="java script:byttepenge();" type="text" value="0" />
        <br />
        <span><label>kontant</label></span>
        <input id="kontant" onblur="java script:byttepenge();" type="text" value="6553,23" />
        <br />
        <span><label>tilbage</label></span>
        <input id="tilbage" type="text" value="0" />
        <br />
    </form>
</body>
</html>
Avatar billede skovenborg Nybegynder
14. juni 2004 - 13:01 #1
Jeg er ikke helt sikker på om det er præcis det her du mente, men du kan prøve:
function byttepenge(elm) {
tot = parseFloat(elm.form.total.value.replace(",","."));
val = tot-parseInt(elm.value.replace(",","."));
if (elm.name == "dankort") {
        elm.form.kontant.value = (Math.max(0,val)).toFixed(2).toString().replace(".",",");
}
elm.form.tilbage.value = (val < 0) ? Math.abs(val).toFixed(2).toString().replace(".",",") : 0;
}

og så skal du ændre din html til det her:
<body>
    <form name="frm_kasse">
        <span><label>total</label></span>
        <input name="total" type="text" value="6553,23" readonly="readonly" />
        <br />
        <span><label>dankort</label></span>
        <input name="dankort" onblur="byttepenge(this);" type="text" value="0" />
        <br />
        <span><label>kontant</label></span>
        <input name="kontant" onblur="byttepenge(this);" type="text" value="6553,23" />
        <br />
        <span><label>tilbage</label></span>
        <input name="tilbage" type="text" value="0" readonly="readonly" />
        <br />
    </form>
</body>

java script: er forresten ulovligt i en event hvor browseren i forvejen forventer det er javascript. java script: skal kun bruges i andre attributter fx <a href="java script:alert('foo');"> - det var bare en lille side kommentar ;-)
Avatar billede brian_d Nybegynder
14. juni 2004 - 13:37 #2
Det er ikke langt fra.
men hvis man taster 1000 i dankort og 5600 i kontanter regner den ikke resultatet.
Avatar billede skovenborg Nybegynder
14. juni 2004 - 13:46 #3
så prøv:
function byttepenge(elm) {
tot = parseFloat(elm.form.total.value.replace(",","."));
val = tot-parseInt(elm.value.replace(",","."));
if (elm.name == "dankort") {
        elm.form.kontant.value = (Math.max(0,val)).toFixed(2).toString().replace(".",",");
}
if (elm.name == "kontant") {
        val -= parseInt(elm.form.dankort.value.replace(",","."));
}
elm.form.tilbage.value = (val < 0) ? Math.abs(val).toFixed(2).toString().replace(".",",") : 0;
}


Men der er stadig en ting som jeg er usikker på om det er rigtigt. Prøv at ændre kontant til 7000 og derefter dankort til fx 10 - så vil scriptet automatisk også ændre kontant i forhold til total. Men skal scriptet tage højde for at man har betalt flere kontanter end det samlede beløb og derfor ikke ændre kontant når denne er højere end total?
Avatar billede brian_d Nybegynder
14. juni 2004 - 13:53 #4
det er fint som det er nu, det skal indlejres i en mere omfattende kasse håndtering.

smid et svar så er der point til dig.
Avatar billede skovenborg Nybegynder
14. juni 2004 - 14:05 #5
værgso' så :-)
Avatar billede skovenborg Nybegynder
14. juni 2004 - 14:48 #6
og tak for points :-)
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