marcq
marcq

Reputation: 483

Add 5 to Product Price and Update Total

I have written a some javascript scripts in order to :

  1. Check if textarea is not empty and get the false or true value
  2. Get the value of a first select dropdown
  3. Get the value of a second select dropdown

Intend is to add 5 to the product price (field name 'productprice') and to update the total (field name 'total').

I get the right values as I can see while checking the console,

link to video : console values returned

but the total field isn't populated|updated with any values.

What is wrong with my code ? Would appreciate some expertise. Thanks.

Form :

<form id='form' name='form'>

<label class='control-label col-sm-2'>Inscription</label>
<div class='col-sm-10'>
    <textarea name='desserttextmessage' id='desserttextmessage' class='form-control' rows='5'></textarea>
        <div class='text-danger'></div>
        <p class='help-block'></p>
</div>

<label class='control-label col-sm-2'>Décoration petites fleurs</label>
<div class='col-sm-10'>
    <select class='form-control' id='dessertdecorflowerID' data-value='undefined' name='dessertdecorflowerID'>
        <option value=''>** Veuillez saisir une option Décoration petites fleurs</option>
        <option value='1'>Non</option>
        <option value='2'>Oui</option>
    </select>
    <div class='text-danger'></div>
    <p class='help-block'></p>
</div>

<label class='control-label col-sm-2'>Décoration Chocolat et fruits</label>
<div class='col-sm-10'>
    <select class='form-control' id='dessertdecorchocolateID' data-value='undefined' name='dessertdecorchocolateID'>
        <option value=''>** Veuillez saisir une option Décoration Chocolat et fruits</option>
        <option value='1'>Non</option>
        <option value='2'>Oui</option>
    </select>
    <div class='text-danger'></div>
    <p class='help-block'></p>
</div>

<label class='control-label col-sm-2'>Prix</label>
<div class='col-sm-10'>
    <input type='number' step='1' title='Prix' class='form-control' name='productprice' id='productprice' value='56'>
        <div class='text-danger'></div>
        <p class='help-block'></p>
</div>

<label class='control-label col-sm-2'>Total</label>
<div class='col-sm-10'>
    <input type='number' step='1' title='Total' class='form-control' name='total' id='total' value='0'>
        <div class='text-danger'></div>
        <p class='help-block'></p>
</div>

Script :

function onchangeDessertTextMessage() {

var textmessage = document.getElementById('desserttextmessage');

if(textmessage.value == '') 
{

    // alert('false');
    return false;

}
else

    // alert('true');
    return true;

};

function updateTotal() {

    var textmessage = onchangeDessertTextMessage();

    var selectordecorflower = document.getElementById('dessertdecorflowerID');
    var valuedecorflower = selectordecorflower[selectordecorflower.selectedIndex].value;
            // console.log(valuedecorflower);

    var selectordecorchocolate = document.getElementById('dessertdecorchocolateID');
    var valuedecorchocolate = selectordecorchocolate[selectordecorchocolate.selectedIndex].value;
            // console.log(valuedecorchocolate);

    var productprice = document.getElementById('productprice').value;
    var surcharge = 5;
    var total = parseInt(productprice);
    var totalsurcharge = parseInt(productprice) + parseInt(surcharge);
    // console.log(textmessage);
    // console.log(textmessage);
    // console.log(valuedecorflower);
    // console.log(valuedecorchocolate);

    if (textmessage === true || valuedecorflower > 1 || valuedecorchocolate > 1)

    {

        console.log(totalsurcharge);

    } 

        else if  (textmessage !== true || valuedecorflower < 2 || valuedecorchocolate < 2)

    {

        console.log(productprice);

    } 

};

window.onchange = onchangeDessertTextMessage;
window.onchange = updateTotal;

Upvotes: 0

Views: 60

Answers (1)

Les
Les

Reputation: 1425

You're trying to update the input field 'total' with innerHTML - that doesn't work on text inputs - you need to use value.

e.g. document.getElementById('total').value = productprice;

Upvotes: 1

Related Questions