2015-04-04 86 views
-1

我有以下代碼來計算總成本,具體取決於在文本字段中輸入的內容以及選擇哪個包。從多個選擇字段計算總成本值

<label for="_mdjm_event_cost" class="mdjm-label">Total Cost:</label> 
<br />&pound; 
<input type="text" name="_mdjm_event_cost" id="_mdjm_event_cost" class="mdjm-input-currency required" value="" placeholder="0.00" /> 
<br /> 
<label for="_mdjm_event_package" class="mdjm-label">Select an Event Package:  </label> 
<br /> 
<select name="_mdjm_event_package" id="_mdjm_event_package"> 
<option value="" data-price="0.00">No Package</option> 
<option value="test" data-price="100.00">Test</option> 
</select> 
<br /> 
<label for="_mdjm_event_addons" class="mdjm-label">Select Add-ons:</label> 
<br /> 
<select name="_mdjm_event_addons" id="_mdjm_event_addons" multiple="multiple"> 
<option value="" disabled="disabled" data-price="0.00">EFFECTS</option> 
<option value="" disabled="disabled" data-price="0.00">GENERAL</option> 
<option value="" disabled="disabled" data-price="0.00">LIGHTING</option> 
<option value="mood-lighting" data-price="50.00">Mood Lighting x 3 - &pound;50.00</option> 
</select> 

jQuery(document).ready(function ($) { 
base = 0; 
$("#_mdjm_event_cost").on("keyup", function() { 
    base = $('#_mdjm_event_cost').val(); 
}); 
$("#_mdjm_event_package").on("change", function() { 
    var total = (base * 100 + $(this).find(":selected").data("price") * 100)/100; 
    $("#_mdjm_event_cost").val(total.toFixed(2)); 
    }); 
}); 

代碼工作正常,以便在選擇包時計算新的總和。我現在想擴展它,以便在從加載項多選框中選擇(或取消選擇)加載項時進一步更新總成本字段。在https://jsfiddle.net/tanyk8wu/

感謝

回答

0

OK

當前工作撥弄我相信我有以下更新到jQuery代碼解決了這個...

jQuery(document).ready(function ($) {https://jsfiddle.net/tanyk8wu/#collaborate 
base = 0; 
$("#_mdjm_event_cost").on("keyup", function() { 
    base = $('#_mdjm_event_cost').val(); 
}); 
$('#_mdjm_event_package, #_mdjm_event_addons').change(function() { 
    var extras = 0; 
    var packages = 0; 
    var addons = 0; 
    $('#_mdjm_event_package :selected').each(function() { 
     packages += Number($(this).data("price")); 
    }); 
    $('#_mdjm_event_addons :selected').each(function() { 
     addons += Number($(this).data("price")); 
    }); 
    var extras = (packages + addons); 
    var total = (base * 100 + extras * 100)/100; 
    if (total == "0") { 
     $("#_mdjm_event_cost").val(''); 
    } else { 
     $("#_mdjm_event_cost").val(total.toFixed(2)); 
    } 
}); 
}); 

似乎工作。 Demo at https://jsfiddle.net/tanyk8wu/5/