Diglabs example multi tickets

by riverguy

HTML

<div class="stripe-payment-form-row">
    <label>Ticket Type 1</label>
    <select name="package" id="package">
        <option value="A" data-amount="700" data-options="#packageA">Package A - $7</option>
        <option value="B" data-amount="1400" data-options="#packageB">Package B - $14</option>
    </select>
</div>
<div class="stripe-payment-form-row">
    <label>Ticket Type 2</label>
    <select name="alternate" id="alternate">
        <option value="A" data-amount="800" data-options="#alternateA">Package C - $8</option>
        <option value="B" data-amount="1600" data-options="#alternateB">Package D - $16</option>
    </select>
</div>    
<div class="stripe-payment-form-row">
    <label>Discount</label>
    <select name="discount" id="discount">
         <option value="A" data-amount="1" data-options="#discountZ">discount 0%</option>
         <option value="A" data-amount="0.9" data-options="#discountA">discount 10%</option>
        <option value="B" data-amount=".5" data-options="#alternateB">discount 50%</option>
    </select>    
</div>
<div class="stripe-payment-form-row">
    <input id='amount' type="hidden" class="amount" size="20" name="amount" value="4000"/>
    <label>Total Amount</label>
    <input id='amountShown' type="text" size="20" disabled="disabled" class="disabled amountShown required" value="40.00" />
    <span class="stripe-payment-form-error"></span>
</div>

CSS

.stripe-payment-form-row {
    margin: 5px 0;
}
.stripe-payment-form-row label{
    display: block;
    float: left;
    width: 100px;
}

JavaScript

(function($){
    $(document).ready(function(){
        $('#package').change(function(){
            calculateTotal();
        });
        
        $('#alternate').change(function(){
            calculateTotal();
        });
        
        $('#discount').change(function(){
            calculateTotal();
        });
        
        /* $('.options input[type=checkbox]').change(function(){
           calculateTotal(); 
        }); */
        
        calculateTotal();
    });
    
    function calculateTotal(){
        var base = $('#package').find(':selected').data('amount');
        var alt = $('#alternate').find(':selected').data('amount');
        var disc = $('#discount').find(':selected').data('amount');
        var visibleOptions = $('.options:visible');
        var checkedOptions = visibleOptions.find('input:checked');
        var options = 0;
        checkedOptions.each(function(){
             options += $(this).data('amount');
        });
        
        var totalCents = parseInt( (base + alt) * disc);
        $('#amount').val(totalCents);
        var totalDollars = totalCents/100;
        $('#amountShown').val(totalDollars);
    }
})(jQuery);