Zit weer eens vast

Status
Niet open voor verdere reacties.

Pieter Arntz

Spywareslayer
Lid geworden
12 aug 2001
Berichten
15.621
Ik snap mijn eigen script niet meer. ;)
Tenminste niet waarom het soms zo raar doet.

Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="shortcut icon" href="favicon.ico" />
<script type="text/javascript">
function tidy (y){
    max_length=9;                         //max_length= length of text input
    spacing="€             ";
    x=Math.floor(y);
    xx=y-x;
    xx=xx+"00.00"                 //xx=the cents only (with zeroes).
    a=xx.indexOf(".");
    q=x+xx.substring(a,a+3);
    ql= (q.length<max_length)?(max_length-q.length):0;   
    r=(y)?spacing.substring(0,ql)+q:"";
    return (r);
}

function bijmekaar() {
    var bestelopties = document.bestelopties, sum = 0;
    for (var i = 0; i < bestelopties.prijs.length; i++) {
           var beneden = Math.floor(bestelopties.aantal[i].value);
           var afgerond = Math.round(bestelopties.aantal[i].value);
           if(bestelopties.aantal[i].value != beneden) {
              bestelopties.aantal[i].value = afgerond;
              }
           if(bestelopties.aantal[i].value >= bestelopties.voorraad[i].value) {
              bestelopties.aantal[i].value = bestelopties.voorraad[i].value;
              }
           sum += parseFloat(bestelopties.aantal[i].value * bestelopties.prijs[i].value.replace(',','.'));
           }
    sum1= (tidy(sum));
    sum2= sum1.replace('.',',');
    document.getElementById("sum").innerHTML = sum2;
    };
</script>
</head>
<body onload="bijmekaar()">
<div id="containerstart"><BR><BR>
<FORM NAME="bestelopties" ACTION="bestelstap4.php" METHOD="POST">
<table border="1" width="650" cellspacing="5" cellpadding="0">Deurplaat <b>Koskifutura op voorraad</b><BR>
<tr><td>Aantal in voorraad</td><td>dikte*breedte*lengte</td><td>Stuksprijs</td><td>Bestel aantal</td></tr>
<tr><td><input type="hidden" name="voorraad" value="40">40</td><td>   15  *  1250  *   2500</td>
<td><input type="hidden" name="prijs" value="121.5">121,50</td><td><input type="text" name="aantal" onchange="bijmekaar();"></td></tr>
<tr><td><input type="hidden" name="voorraad" value="40">40</td><td>   15  *  1250  *   2500</td>
<td><input type="hidden" name="prijs" value="121.5">121,50</td><td><input type="text" name="aantal" onchange="bijmekaar();"></td></tr>
<tr><td><input type="hidden" name="voorraad" value="5">5</td><td>   24  *  1250  *   3000</td>
<td><input type="hidden" name="prijs" value="168.75">168,75</td><td><input type="text" name="aantal" onchange="bijmekaar();"></td></tr>
<tr><td><input type="hidden" name="voorraad" value="1">1</td><td>   24  *  1220  *   2750</td>
<td><input type="hidden" name="prijs" value="151">151,00</td><td><input type="text" name="aantal" onchange="bijmekaar();"></td></tr>
<tr><td colspan=2 align="center"><p><input type="submit" value="Voeg toe aan bestelling"></p></td><td>Subtotaal :</td><td><span id="sum"></span></td></tr>
</table>
</form>
Let op. Bij onvoldoende voorraad wordt uw bestelling automatisch aangepast!!
</div>
</div>
</body>
</html>

Even uitleggen: de functie tidy heb ik geleend en verbouwd van http://www.katipo.co.nz/clients/helpdesk/javascript/js-clean_and_tidies.html

Wat er mis gaat is het volgende. De regel die behoort te controleren of er niet meer besteld wordt dan er in voorraad is, veranderd soms ook lagere bedragen naar het totaal dat in voorraad is. :shocked:
Vul in de eerste box 5 in en je begrijpt, denk ik, wel wat ik bedoel. Als ik dat doe maakt hij er 40 van.

Alvast bedankt voor enige hulpvolle suggesties.
 
Heb hem al. De voorraad werd gelezen als een string dus 5 was groter dan 40

Het stukje met de voorraad ziet er nu zo uit:

Code:
var voorraad =parseFloat(bestelopties.voorraad[i].value);
if(bestelopties.aantal[i].value >= voorraad) {
              bestelopties.aantal[i].value = voorraad;
              }
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan