我有一个要求地址的表单。在每个地址之后,我们会询问该人在该地址中居住了多长时间,其中有几年和几个月的<select>
下拉列表。
每次更改<select>
时都会有一个jQuery事件:
var prev_addresses = 0;
$('select.months, select.years').change(function() {
// Calculate total months
var months = $('select.months').val();
var years = $('select.years').val();
var total_months = parseInt(months) + parseInt(years*12); // We parseInt() to avoid concatenation
console.log('Total months: '+total_months);
if(total_months < 12) {
// Find the next div.hidden-address
prev_addresses = prev_addresses+1;
console.log('Number of previous addresses: '+prev_addresses);
console.log('');
$('div.hidden-address').clone(true).appendTo('#previous-addresses').slideToggle();
}
});
我希望在一个人的地址不到12个月的时间里,这种情况一直在发生。但是,在事件第一次触发后,每次更新<select>
时,控制台都会记录第一组值(从原始的年份和月份选择,即使现在有多个值)。
我想在页面上总计每个 <select>
元素的值,即使动态添加更多元素也是如此。我该怎么做?
希望有道理,我很乐意澄清您是否需要进一步的细节。
谢谢,
杰克
答案 0 :(得分:1)
遍历所有选择框,并将值添加到变量中,如下所示:
var totalMonths = 0;
$('select.months').each(function () {
totalMonths += $(this).val();
});
$('select.years').each(function () {
totalMonths += 12 * $(this).val();
});