Search code examples
javascripthtmltextboxdropdownbox

calculation using dropdown box and textbox


Before you guys shoot me down for not trying the code, I am very new to Javascript and I need to implement this function into a very important work.

I got the basis dropdown calculation from this thread, Javascript drop-down form math calculation. I modified the code referred from the thread for my codes

Forgive me if my codes is totally wrong, I am still trying to do piece by piece. Will be grateful if you all can help me pinpoint the errors and/or issues.

So back to topic, I want to get the cost for each items, and then count the total cost to be calculated. The JSFiddle link is here. Appreciate for your helps rendered.

HTML CODES

<form name="priceCalc" action="">Laundry (Gentlemen)
<br/>Apparels:
<select name="gapparell" onchange="gentlemanl();">
    <option value="5.00">Tie</option>
    <option value="7.50">Shirt</option>
    <option value="12.50">Jacket</option>
</select>
<br>Quantity:
<input type="text" id="gqtyl" onchange="gentlemanl();" />
<br>
<br/>Dry Cleaning (Gentlemen)
<br/>Apparels:
<select name="gappareld" onchange="gentlemand();">
    <option value="6.00">Tie</option>
    <option value="8.50">Shirt</option>
    <option value="13.50">Jacket</option>
</select>
<br>Quantity:
<input type="text" id="gqtyd" onchange="gentlemand();" />
    <br/><br/><br/>Laundry (Ladies)
<br/>Apparels:
<select name="lapparell" onchange="ladiesl();">
    <option value="5.00">Tie</option>
    <option value="7.50">Shirt</option>
    <option value="12.50">Jacket</option>
</select>
<br>Quantity:
<input type="text" id="lqtyl" onchange="ladiesl();" />
<br>
<br/>Dry Cleaning (Ladies)
<br/>Apparels:
<select name="lappareld" onchange="ladiesd();">
    <option value="6.00">Tie</option>
    <option value="8.50">Shirt</option>
    <option value="13.50">Jacket</option>
</select>
<br>Quantity:
<input type="text" id="lqtyd" onchange="ladiesd();" />
<br>Total Cost:
<input type="text" id="prices">
<br/>
<input type="button" value="Figure out pricing!" onclick="total();">
<br>

JAVASCRIPT CODES

function gentlemanl() {
var Amt = document.priceCalc.gapparell;
var Qty = document.priceCalc.gqtyl;
var price = parseInt(Qty.value) * parseFloat(Amt.value);
document.getElementById("prices").value = price; 
}

function gentlemand() {
var Amt = document.priceCalc.gappareld;
var Qty = document.priceCalc.gqtyd;
var price = parseInt(Qty.value) * parseFloat(Amt.value);
document.getElementById("prices").value = price;
}

function ladiesl() {
var Amt = document.priceCalc.lapparell;
var Qty = document.priceCalc.lqtyl;
var price = parseInt(Qty.value) * parseFloat(Amt.value);
document.getElementById("prices").value = price;
}

function ladiesd() {
var Amt = document.priceCalc.lappareld;
var Qty = document.priceCalc.lqtyd;
var price = parseInt(Qty.value) * parseFloat(Amt.value);
document.getElementById("prices").value = price;
}

function total() {
//I am not sure how the function works
}

Solution

  • this is a working exemple of what i think you want to do : http://jsfiddle.net/gd12k4mt/5/

    function gentleman1() {
        var Amt = document.priceCalc.gapparell;
        var Qty = document.priceCalc.gqtyl;
        return parseInt(Qty.value) * parseFloat(Amt.value);
    }
    

    I designed the functions like that. With a return statement for the value of each product * the quantity.

    function total() {
    if(isNaN(gentleman1())) {
        gentleman_laundry = 0;
    } else {
        gentleman_laundry = gentleman1();
    }
    
    if(isNaN(gentlemand())) {
         gentleman_dry = 0;   
    } else {
         gentleman_dry = gentlemand();
    }
    
    if(isNaN(ladies1())) {
       ladies_laundry = 0;   
    } else {
       ladies_laundry = ladies1();
    }
    
    if(isNaN(ladiesd())){
       ladies_dry = 0;   
    } else {
       ladies_dry = ladiesd();
    }
    
    var totalPrice = gentleman_laundry+gentleman_dry+ladies_laundry+ladies_dry;
    
    document.getElementById('prices').value = totalPrice;
    }
    

    The total function is like that with a test on empty fields. In this purpose I created the variables :

    var gentleman_laundry,
        gentlemend_dry,
        ladies_laundry,
        ladies_dry;
    

    Be sure that your functions's name is good : here you have two different names in you're html events and in your script.

    I personally did without theses html listeners because we want the total price at the end I guess. So I declared only one listener on the final button.

    document.getElementById('submit_button').addEventListener('click', function(){
        total();
    })
    

    Hope this helped.