我在这里寻找答案,但没有找到任何可以直接帮助我的东西,所以我会问这里。我有一个包含多个选择框的表单:
<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,这更容易。提前感谢您的帮助!!
答案 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()来获取所有类中的值。