jQuery - 总计几个数字<select>元素的值?</select>

时间:2011-09-06 10:41:45

标签: javascript jquery dom jquery-selectors

我有一个要求地址的表单。在每个地址之后,我们会询问该人在该地址中居住了多长时间,其中有几年和几个月的<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>元素的值,即使动态添加更多元素也是如此。我该怎么做?

希望有道理,我很乐意澄清您是否需要进一步的细节。

谢谢,

杰克

1 个答案:

答案 0 :(得分:1)

遍历所有选择框,并将值添加到变量中,如下所示:

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

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