从具有相同名称的多个选择框中获取值?用jquery和php包含它的值

时间:2012-01-19 18:32:18

标签: php jquery forms html-select

我在这里寻找答案,但没有找到任何可以直接帮助我的东西,所以我会问这里。我有一个包含多个选择框的表单:

<select name="acabados[]">
<option value="1">ABC</option>
<option value="2">DEF</option>
<option value="3">GHI</option>
</select>

<select name="acabados[]">
<option value="1">ABC</option>
<option value="2">DEF</option>
<option value="3">GHI</option>
</select>

如您所见,它们是完全相同的选择框。我已告诉客户使用select multiple但他想这样做。用户可以根据需要添加这些选择框(因此一次最多可以添加20个选择框),我需要获取值(1或2或3)以及选项内的文本。这是一个我需要分解的数组,因为我需要在php中添加选择框的总值。我可以使用jquery来收集值或php,这更容易。提前感谢您的帮助!!

4 个答案:

答案 0 :(得分:7)

试试这个,它也适用于动态创建的选择元素。

$(document).on('change', 'select[name="acabados[]"]', function(){
    var total = 0;
    $('select[name="acabados[]"]').each(function(){
        total += parseInt($(this).val());
    });
});

total var将包含所有选定元素的总和值。

答案 1 :(得分:2)

$(function () {
    var $select = $('select');
    $select.on('change', function () {
        var output = 0;
        for (var i = 0, len = $select.length; i < len; i++) {
            output += parseInt($select.eq(i).val());
        }
        //the `output` variable now contains the addition of all the values from the `acabados[]` select elements
    });
});

以下是演示:http://jsfiddle.net/aPXXA/1/

您可以将var $select = $('select');更改为var $select = $('[name="acabados[]"]');,只选择select名称属性的acabados[]元素。

答案 2 :(得分:2)

如果要在PHP中检索值,可以使用$_POST['acabados'],它将包含每个菜单中选择的所有值。 See a demo.只要在名称后面加[],就会将具有该名称的任何元素的值 all 复合到一个数组中。你甚至可以mix select menus, inputs, and textareas在一起!

答案 3 :(得分:0)

为什么不给它们不同的id并在jquery / javascript中进行计数。或者给它们所有相同的类,并使用.each()来获取所有类中的值。