Hallo mensen, ben met een uitgebreid bestel script voor webhosting bezig. En heb hier bij een een calculator nodig.

Dit is wat ik momenteel heb:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml"; lang="en" xml:lang="en">

<head>
<script type="text/javascript" src="webhostingPrices.js"></script>
</head>

<body>

<form>
<table>
<tr>
<td style="width:119px;">Domeinnaam:</td>
<td>www.<input style="width:160px;" type="text" name="domein" id="domein" value="" /></td>
<td><select name="domeinext" id="domeinext" />
<option value="empty">Extensie</option>
<option value="nl">.nl</option>
<option value="be">.be</option>
<option value="de">.de</option>
<option value="fr">.fr</option>
<option value="it">.it</option>
<option value="pl">.pl</option>
<option value="nu">.nu</option>
<option value="bz">.bz</option>
<option value="at">.at</option>
<option value="fm">.fm</option>
<option value="ch">.ch</option>
<option value="cx">.cx</option>
<option value="cz">.cz</option>
<option value="es">.es</option>
<option value="gd">.gd</option>
<option value="gl">.gl</option>
<option value="gs">.gs</option>
<option value="eu">.eu</option>
<option value="in">.in</option>
<option value="la">.la</option>
<option value="org">.org</option>
<option value="com">.com</option>
<option value="info">.info</option>
<option value="co.uk">.co.uk</option>
</select>
</td>
<td id="prijs_extensie">&#8364; <input type="text" name="extensieprijs" id="extensieprijs" onfocus="this.blur()" size="6" /> p/maand.</td>
</table>

</body>
</html>


Zouden jullie me kunnen uitleggen hoe ik dit moet gaan doen, eventueel een tutorial waar ik van kan leren? b.v.d. Andries.
"Java Caculator" ?? Misschien bedoel je een Javascript Calculator?
Er staat ook nergens wat je precies WIL met dit script? Wat wil je precies berekenen?
Ja een Javascript Calculator, dit script is zodat mensen kunnen kiezen welk domein extensie ze willen hebben. Een .nl/.com noem het maar op, maar iedere extensie heeft een andere prijs (bijna iedere dan) en het is de bedoeling dat als de cliënt een extensie kiest dat de maandelijkse kost prijs van de gekozen extensie getoond word en uit eindelijk bij het einde van het op het factuur overzicht te zien is.

Gr
Wat wil je optellen dan? De klant kan voor zover ik kan zien maar 1 keuze maken op deze manier.
Zelfs al maak je een prijscalculator zou je dat niet met Javascript moeten doen want op die manier kan je via een XSS injectie alsnog de prijs gewoon simpel aanpassen waardoor je voor bijv. 0 euro een domein kunt kopen.
Ik mag toch hopen dat het alleen maar voor het oog is. Er moet natuurlijk altijd nog gecontroleerd worden of datgene wat ingevuld is wel correct is.
Dillen Meijboom op 20/04/2011 11:05:35

Zelfs al maak je een prijscalculator zou je dat niet met Javascript moeten doen want op die manier kan je via een XSS injectie alsnog de prijs gewoon simpel aanpassen waardoor je voor bijv. 0 euro een domein kunt kopen.


Dat is niet 100% correct. Een goede programmeur die valideert altijd user-input. Dus, de TS moet kijken of het bedrag dat meegegeven is met het formulier wel kan.
Klopt, ik geef je een voorbeeld.. Is de website van een collega van mij. ( http://gvw-hosting.nl/webhosting/bestellen ) Als je hier in de bron kijkt, zie je dat er een javascript is gebruikt voor het berekenen van de prijzen, in mijn geval is het zo dat ik meerdere stappen aan het maken ben met behulp van php scripts. Heb dit script van mijn collega geprobeerd, maar zonder succes dus ben begonnen aan een script dat hier wel op kan gaan werken. Echter kom ik er zelf momenteel niet uit. Wat betreft dat de prijs nul blijft, is via de weg dat ik doe niet mogelijk, het javascript moet alleen aangeven wat de prijzen zijn p/maand en daar na bij stap 3 aangeven wat de totaal koste zijn excl en incl btw. Bij stap 3 krijgt de cliënt een goed en duidelijk overzicht van zijn/haar bestelling.
Ten 1e moet je je select element iets aanpassen:

<select name="domeinext" id="domeinext" onchange="getPrice(this.value)" />


Javascript code:


var prices = []; //Array met prijzen
prices['nl'] = 50;
prices['be'] = 45;

function getPrice(domain) { //'domain' is het gekozen domein dus bijv: nl of be
var price = prices[domain]; //Als domain nl is dan word het: prices['nl']
document.getElementById('extensieprijs').value = price; //Input value word de prijs
}


En ga zo maar door... Er zijn verschillende manieren om de prijs uit te rekenen maar volgens mij klopt het zo.

Je zou overigens ook kunnen werken met de selectedIndex want dan kun je je array zo opmaken:


var prices = [50, 45]; //Enz
Hey Dillen, ja heb behoorlijk wat zitten neuzen de afgelopen dagen en een hoop dingen geprobeerd. Ik gebruik nu als volgt:


<form>
    <table>
        <tr>
            <td style="width:119px;">Domeinnaam:</td>

            <td>www.<input style="width:160px;" type="text" name="domein" id="domein" /></td>
            <td><select name="domeinext" id="domeinext" onChange="changeWebhosting();" />
                <option value="empty" selected="selected">Extensie</option>
                <option value="nl">.nl</option>
                </select>
        <td id="prijs_extensie">&#8364; <input type="text" name="extensieprijs" id="extensieprijs" onfocus="this.blur()" size="6" /> p/maand.</td>

    </tr>
</table>



Volgende wat ik er nu mee doe, ik vul het totaal bedrag in (zonder btw).


    var ext=0;
    var a=document.getElementById("domeinext").value;
        if(a=='nl') {ext=0.0;}
        else{ext=0;}


Staat hier nu op 0.0 maar je kan er alles in voeren bvb 20/30/40. Nu is de klus, bereken dit bedrag, hij moet aan tonen. Koste p/maand, koste p/jaar, totaal excl btw, wat er bij komt met 19% btw en totaaal incl btw. En dat heb ik eindelijk gevonden en heb ik zo gedaan.


    var extpy= ext;
    var extpm= ext/12;
    var btwext= ext/100*19;
    var btwtt= btwext;
    var ttexcl= extpy;
    var ttincl= ttexcl+btwtt;


En dan tonen in het script, door het volgende te gebruiken.


    document.getElementById("extensieprijs").value= Math.round(extpm*100)/100;     
    document.getElementById("totaalext").value= Math.round(extpy*100)/100;     
    document.getElementById("totaalexcl").value= Math.round(ttexcl*100)/100;
    document.getElementById("btwprocent").value= Math.round(btwtt*100)/100;
    document.getElementById("totaalincl").value= Math.round(ttincl*100)/100;


Dit werkt als een zonnetje, dus voor mij is het probleem gelukkig opgelost. Ty in ieder geval voor jou manier Dillen
Tip:
Om bedragen (3 euro) goed te weergeven als geld (3.00 euro) kan je dit gebruiken:


price = 5;
document.write(price.toFixed(2));


Als opmerking nog:
Java != JavaScript.

Reageren