javascript - 动态计算多选选项数据值
问题描述
在我的表格中,有 5 个国籍选择框,其中包含数据值。
<select id="visitorcount" name="visitorcount">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<div id="person1">
<select id="country1" name="visitor1">
<option value="india" data-fee="20">India</option>
<option value="usa" data-fee="25">USA</option>
</select>
</div>
<div id="person2" style="display:none">
<select id="country2" name="visitor2">
<option value="india" data-fee="20">India</option>
<option value="usa" data-fee="25">USA</option>
</select>
</div>
<div id="person3" style="display:none">
<select id="country3" name="visitor3" style="display:none">
<option value="india" data-fee="20">India</option>
<option value="usa" data-fee="25">USA</option>
</select>
</div>
<div id="person4" style="display:none">
<select id="country4" name="visitor4" style="display:none">
<option value="india" data-fee="20">India</option>
<option value="usa" data-fee="25">USA</option>
</select>
</div>
<div id="person5" style="display:none">
<select id="country5" name="visitor5" style="display:none">
<option value="india" data-fee="20">India</option>
<option value="usa" data-fee="25">USA</option>
</select>
</div>
<div id="totalcost"></div>
第一个选项是静态的,并且始终以表单形式存在,其他 4 个选项仅在我们选择访问者数量时才会显示。
现在我想要的是,当我选择选项 1 时,它应该在 div totalcost 中显示数据费用值。当我们选择选项 2 时,它应该显示选项 1 + 选项 2 数据费用值,依此类推,与所有其他选择选项类似。当我们减少访客数量时,它应该降低成本。
我只是无法理解如何处理这个问题。
我可以像这样获得第一个选择选项的成本,但不知道如何动态处理,根据访问者数量显示和隐藏 div,然后选择选项并获取价格并在减少访问者数量时降低价格。
<script>
$('body').on('change', '#country1', function() {
var priceforcountry = $('option:selected', this).data('fee');
$('#totalcost').text(priceforcountry);
//alert(priceforcountry);
});
</script>
当我们在选项 1 中选择国家时,它应该在所有其他 4 个选择框中自动选择相同的选项。
解决方案
像这样?
您可以将每个按类选择器用于动态然后检查 cssdisplay
$('body').on('change', '#visitorcount', function() {
for (var i = 1; i <= 5; i++) {
if (i <= $('#visitorcount').val()) {
$('#person' + i).show();
$('#country' + i).show();
} else {
$('#person' + i).hide();
$('#country' + i).hide();
}
}
});
$('body').on('change', '.ct,#visitorcount', function() {
var priceforcountry = 0;
$('.ct').each(function(index,element){
if($(element).parent().css("display") != "none"){
priceforcountry += +$('option:selected', this).data('fee');
}
});
$('#totalcost').text(priceforcountry);
//alert(priceforcountry);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="visitorcount" name="visitorcount">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<div id="person1">
<select id="country1" name="visitor1" class="ct">
<option value="india" data-fee="20">India</option>
<option value="usa" data-fee="25">USA</option>
</select>
</div>
<div id="person2" style="display:none" >
<select id="country2" name="visitor2" class="ct">
<option value="india" data-fee="20">India</option>
<option value="usa" data-fee="25">USA</option>
</select>
</div>
<div id="person3" style="display:none">
<select id="country3" name="visitor3" style="display:none" class="ct">
<option value="india" data-fee="20">India</option>
<option value="usa" data-fee="25">USA</option>
</select>
</div>
<div id="person4" style="display:none">
<select id="country4" name="visitor4" style="display:none" class="ct">
<option value="india" data-fee="20">India</option>
<option value="usa" data-fee="25">USA</option>
</select>
</div>
<div id="person5" style="display:none">
<select id="country5" name="visitor5" style="display:none" class="ct">
<option value="india" data-fee="20">India</option>
<option value="usa" data-fee="25">USA</option>
</select>
</div>
<div id="totalcost"></div>
推荐阅读
- xamarin - Xamarin 新项目 - CS0246 找不到类型或命名空间名称“App”
- ios - Cordova 无法从 CLI 构建,但从 XCode xcworkspace 构建可以完美运行
- html - 主机reveal.js幻灯片(.html)[Jupyter notebook export]作为非本地服务器上的网页
- orientdb - 从 OrientDB 中的 unionall 中删除重复的结果
- django - django中表单字段的动态数量
- java - javac:即使在设置 HOME_PATH 之后也找不到文件
- php - Laravel 中的注册表单重定向到自身而不创建用户实例
- php - 将不带扩展名的文件夹内容显示为链接
- angular - 如何在 URL 的 Angular 参数中包含 .equals?
- javascript - 在动画期间使 Click 事件不可用