javascript berekening werkt niet
Weet iemand waarom?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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>
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
Wat gaat er precies fout? Welke foutmelding geeft de firebug addon van firefox bijvoorbeeld?
Dit is de pagina waar et opgebeurd:
Code (php)
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
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>€ <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"> </td>
<td width="138"><strong>Subtotaal:</strong></td>
<td width="96">€ <input name="subtotaal" type="text" readonly="readonly" size="6" value="<? echo $subtotaal2; ?>" /></td>
</tr>
<tr>
<td> </td>
<td><strong>Korting:</strong></td>
<td>€ <input name="korting" type="text" size="6" onchange="btw()"/></td>
</tr>
<tr>
<td> </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> </td>
<td><strong>Totaal bedrag:</strong></td>
<td>€ <input name="totaal" type="text" readonly="readonly" size="6" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>
<input type="submit" name="maak_factuur" id="maak_factuur" value="Maak factuur" /></td>
</tr>
</table>
</form>
</body>
</html>
<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>€ <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"> </td>
<td width="138"><strong>Subtotaal:</strong></td>
<td width="96">€ <input name="subtotaal" type="text" readonly="readonly" size="6" value="<? echo $subtotaal2; ?>" /></td>
</tr>
<tr>
<td> </td>
<td><strong>Korting:</strong></td>
<td>€ <input name="korting" type="text" size="6" onchange="btw()"/></td>
</tr>
<tr>
<td> </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> </td>
<td><strong>Totaal bedrag:</strong></td>
<td>€ <input name="totaal" type="text" readonly="readonly" size="6" /></td>
</tr>
<tr>
<td> </td>
<td> </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
Je zou totaalbedrag() dus vanuit je btw() functie aan kunnen roepen.
hij doet het ook niet als ik de readonly verwijderd,,
Daarnaast zit er nog een fout in je totaalbedrag() functie:
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.
hoe kan ik dat oplossen?
Gebruik de parseFloat() functie om een string naar een nummer om te zetten...
dank het werkt!