javascript berekening werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Spaans

Jeroen Spaans

01/03/2009 13:24:00
Quote Anchor link
Ik heb het volgende stukje javascript voor het bereken van de btw en het totaal bedrag, alleen het totaal bedrag word niet berekend, het btw bedrag wel.

Weet iemand waarom?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script type="text/javascript">
function btw() {
    // lees waarden:
    veldwaarde1 = document.maak_factuur1.subtotaal.value;
    veldwaarde2 = document.maak_factuur1.korting.value;
    veldwaarde3 = document.maak_factuur1.btw1.value;

    //optellen:
    document.maak_factuur1.btw2.value = ((veldwaarde3/100)*(veldwaarde1 - veldwaarde2)).toFixed(2);
}
function totaalbedrag() {
    // lees waarden:
    veldwaarde4 = document.maak_factuur1.subtotaal.value;
    veldwaarde5 = document.maak_factuur1.korting.value;
    veldwaarde6 = document.maak_factuur1.btw2.value;

    //optellen:
    document.maak_factuur1.totaal.value = ((veldwaarde4 - veldwaarde5) + veldwaarde6).toFixed(2);
}
</script>
Gewijzigd op 01/01/1970 01:00:00 door Jeroen Spaans
 
PHP hulp

PHP hulp

26/04/2024 19:13:17
 
Joren de Wit

Joren de Wit

01/03/2009 13:47:00
Quote Anchor link
Wat gaat er precies fout? Welke foutmelding geeft de firebug addon van firefox bijvoorbeeld?
 
Jeroen Spaans

Jeroen Spaans

01/03/2009 13:54:00
Quote Anchor link
Geen foutmeldingen,,

Dit is de pagina waar et opgebeurd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function btw() {
    // lees waarden:
    veldwaarde1 = document.maak_factuur1.subtotaal.value;
    veldwaarde2 = document.maak_factuur1.korting.value;
    veldwaarde3 = document.maak_factuur1.btw1.value;

    //optellen:
    x = ((veldwaarde3/100)*(veldwaarde1 - veldwaarde2));
    document.maak_factuur1.btw2.value = x.toFixed(2);
}
function totaalbedrag() {
    // lees waarden:
    veldwaarde4 = document.maak_factuur1.subtotaal.value;
    veldwaarde5 = document.maak_factuur1.korting.value;
    veldwaarde6 = document.maak_factuur1.btw2.value;

    //optellen:
    x = ((veldwaarde4 - veldwaarde5) + veldwaarde6)
    document.maak_factuur1.totaal.value = x.toFixed(2);
}
</script>
</head>

<body>
<? include('config/config.php'); ?>
<form id="maak_factuur1" name="maak_factuur1" method="post" action="?cat=facturen&page=maak-factuur2&klantnr=<? echo $_GET['klantnr']; ?>">
  <table width="760" border="1" cellpadding="1" cellspacing="0" bordercolor="#000000">
    <tr>
      <td width="58"><strong>Kostnr.</strong></td>
      <td width="125"><strong>Kostensoort</strong></td>
      <td width="375"><strong>Omschrijving</strong></td>
      <td width="86"><strong>Datum</strong></td>
      <td width="94"><strong>Bedrag</strong></td>
    </tr>
    <?
    $totaal
= 0;
    foreach($_POST['factureer'] as $kostnr){
    $select = "SELECT * FROM factureren WHERE kostnr = '".$kostnr."'";
    $query = mysql_query($select) or die (mysql_error());
    $result = mysql_fetch_assoc($query);
    ?>

    <tr>
      <td><? echo $kostnr; ?><input type="hidden" name="kostnr[]" id="kostsnr" value="<? echo $kostnr; ?>"/></td>
      <td><? echo $result['kostensoort']; ?></td>
      <td><? echo $result['omschrijving']; ?></td>
      <td><? echo $result['datum']; ?></td>
      <td>&euro; <input name="bedrag" type="text" readonly="readonly" size="6" value="<? echo $result['bedrag']; ?>" /></td>
    </tr>
    <?
    $totaal
= $totaal + $result['bedrag'];
}

$subtotaal2 = sprintf("%01.2f", $totaal);
?>

</table>
 <table width="623" border="1" cellpadding="1" cellspacing="0" bordercolor="#333333">
  <tr>
      <td width="617"><strong>Opmerkingen:</strong></td>
  </tr>
  <tr>
      <td width="617"><textarea name="opmerkingen1" id="opmerkingen1" cols="74" rows="6"></textarea></td>
  </tr>
  </table>
<table width="760" border="0" cellpadding="1" cellspacing="0">
    <tr>
      <td width="520">&nbsp;</td>
      <td width="138"><strong>Subtotaal:</strong></td>
      <td width="96">&euro; <input name="subtotaal" type="text" readonly="readonly" size="6" value="<? echo $subtotaal2; ?>" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><strong>Korting:</strong></td>
      <td>&euro; <input name="korting" type="text" size="6" onchange="btw()"/></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><strong>BTW:</strong>
        <input name="btw1" type="text" id="btw1" size="2" onchange="btw()" value="6" />
      %</td>
      <td>
      <input name="btw2" type="text" id="btw2" size="6" readonly="readonly" onchange="totaalbedrag()" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><strong>Totaal bedrag:</strong></td>
      <td>&euro; <input name="totaal" type="text" readonly="readonly" size="6" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>
      <input type="submit" name="maak_factuur" id="maak_factuur" value="Maak factuur" /></td>
    </tr>
  </table>
</form>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Jeroen Spaans
 
Joren de Wit

Joren de Wit

01/03/2009 14:06:00
Quote Anchor link
De functie totaalbedrag() wordt aangeroepen bij het onchange event van een readonly veld? Dat verklaart het probleem aangezien je een readonly veld niet kunt veranderen en het onchange event dus nooit getriggered wordt...

Je zou totaalbedrag() dus vanuit je btw() functie aan kunnen roepen.
 
Jeroen Spaans

Jeroen Spaans

01/03/2009 14:10:00
Quote Anchor link
hij doet het ook niet als ik de readonly verwijderd,,
 
Joren de Wit

Joren de Wit

01/03/2009 14:19:00
Quote Anchor link
Om te beginnen wordt een onchange event alleen getriggerd als een gebruiker iets in een veld verandert en dus niet als je mbv javascript een veld vult.

Daarnaast zit er nog een fout in je totaalbedrag() functie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
x = ((veldwaarde4 - veldwaarde5) + veldwaarde6);

De variabelen veldwaarde4-6 zijn allen strings, het zijn immers de waarden van verschillende formuliervelden. Dat betekent dan ook dat de + niet voor een optelling maar voor een concatenatie zorgt. Stop de variabele x maar eens in een alert() en je zult zien wat ik bedoel.

Bovendien is de variabele x dus ook een string, en daarop kun je de method toFixed() van de volgende regel niet gebruiken. Die werkt alleen op number objecten, niet op strings.
 
Jeroen Spaans

Jeroen Spaans

01/03/2009 14:22:00
Quote Anchor link
hoe kan ik dat oplossen?
 
Joren de Wit

Joren de Wit

01/03/2009 14:28:00
Quote Anchor link
Gebruik de parseFloat() functie om een string naar een nummer om te zetten...
 
Jeroen Spaans

Jeroen Spaans

01/03/2009 14:32:00
Quote Anchor link
dank het werkt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.