我在这里寻找答案,但没有找到任何可以直接帮助我的东西,所以我要在这里询问。我有一个带有多个选择框的表格:
<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()来获取所有类中的值。