2011-09-06 53 views
0

我有一个要求地址的表单。在每个地址之后,我们询问该人在该地址中居住了多长时间,其中<select>为年和月。jQuery - 总计几个数字<select>元素的值?

我有一个jQuery事件每个<select>改变时:

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>时,控制台都只记录第一组值(从原始的Year和Month选择,即使现在有多个)。

即使在动态添加更多元素之后,我也希望在页面上每<select>元素总计值为。我怎样才能做到这一点?

希望有道理,我很乐意澄清,如果你需要进一步的细节。

感谢,

杰克

回答

1

遍历所有选择框,和值添加到一个变量,像这样:

var totalMonths = 0; 
$('select.months').each(function() { 
    totalMonths += $(this).val(); 
}); 

$('select.years').each(function() { 
    totalMonths += 12 * $(this).val(); 
});