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


Get values from multiple select boxes with same name? Including its value with jquery and php

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

<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,这更容易。提前感谢您的帮助!!

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

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

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

如果您想在PHP中检索值,只需使用$_POST['acabados'],它将包含每个菜单中选择的所有值。查看演示。只要在名称后面包含[],它就会将任何具有该名称的元素的所有值组合到一个数组中。您甚至可以将选择菜单、输入和文本区域混合在一起!

$(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[]"]');,以仅选择具有acabados[]名称属性的select元素。

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