【发布时间】:2014-08-03 04:05:02
【问题描述】:
因此脚本以初始值$8.90 开头,其想法是根据所选选项添加额外费用,HTML 分为 3 个部分 1.check-boxes、2.Select 和 3。输入文本)。
每个部分独立工作,我正在尝试找到一种方法来组合所有 3 个部分,以便 TOTAL 可以根据所选选项显示最终结果。
JQUERY:
$(document).ready( function() {
<!-- COUNTRY OPTIONS SCRIPT -->
$('#country').on('keyup change', function(e){
//Changed the following line to get the original value
var subt_value = $('#subt0').attr('data-original');
//Changed this to say, NOT AR and has a choice per the comments.
if($(this).val() != 'AR' && $(this).val().length > 0) {
var add_sub = parseFloat(subt_value)+parseFloat('10.00');
$('#subt0').text(parseFloat(add_sub).toFixed(2));
} else {
//Otherwise put it back to the original value
$('#subt0').text(subt_value);
}
});
<!-- END COUNTRY OPTIONS SCRIPT -->
<!-- CHECKBOX OPTIONS SCRIPT -->
var start_price = parseFloat($('#subt0').attr('data-original'));
$("#ser1, #ser2").click(function(){
var amountToAdd = 0.0;
$("#ser1, #ser2").each(function() {
if($(this).is(":checked")){
amountToAdd += parseFloat($(this).attr('data-price'));
}
});
$('#subt0').text(parseFloat(amountToAdd+start_price).toFixed(2));
});
<!-- END CHECKBOX OPTIONS SCRIPT -->
<!-- INPUT OPTIONS SCRIPT -->
$(".opts").click(function() {
var amountToAdd = 0.0;
$(this).each(function() {
$("#map_sector").val($(this).attr('data-price'));
amountToAdd += parseFloat($(this).attr('data-price'));
});
$('#subt0').text(parseFloat(amountToAdd+start_price).toFixed(2));
});
<!-- END INPUT OPTIONS SCRIPT -->
});
HTML:
<input name="service1" type="checkbox" id="ser1" data-price="1" value="1" title="Service 1" />
<input name="service2" type="checkbox" id="ser2" data-price="5" value="1" title="Service 2" />
<select id="country">
<option value="AR">Argentina</option>
<option value="US">USA</option>
<option value="BR">Brasil</option>
<option value="CU">Cuba</option>
</select>
<input name="map_sector" type="text" id="map_sector" value="5" readonly>
<label class="opts" data-price="1">Option #1</label>
<label class="opts" data-price="5">Option #2</label>
<label class="opts" data-price="8">Option #3</label>
<div>TOTAL: <label id="subt0" data-original="8.90">8.90</label></div>
寻找这个结果:
如果有 2 个复选框选中:$14.90 + 选项(美国)选中:$10.00 + Option#2 选中:$5.00:总计: 29.90 美元
【问题讨论】:
-
为什么不让事情保持一致并添加数据价格来选择选项。如果不是那么好,输入字段对价格是否有任何影响。您所需要的只是在您的标签中选择并检查所有数据价格项目,然后按照您的操作进行 parseFloat。我还建议创建一个名为 CalculateTotal() 的函数,该函数应读取所有选定等项的值。在每次点击或选择的事件中,只需调用此函数。
-
问题在于,即使您已经添加了其他成本,您仍在将成本添加到原始值上。例如,如果您选择“美国”,您不想将 10.00 添加到原始 8.90 上,而是要将其添加到当前值。那么技巧就变成了,如果您更改选择,则必须在添加新选择的值之前删除旧选择添加的值。
-
我没有在选择选项中添加数据价格,因为除了 AR 之外,所有选项的价格都相同
标签: javascript php jquery select checkbox