Я искал ответы здесь и не нашел ничего, что непосредственно может мне помочь, поэтому я собираюсь спросить здесь. У меня есть форма с несколькими блоками выбора:
<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, что когда-либо проще. Спасибо заранее за любую помощь!!
Попробуйте это, он будет работать и для динамически созданных элементов выбора.
$(document).on('change', 'select[name="acabados[]"]', function(){ var total = 0; $('select[name="acabados[]"]').each(function(){ total += parseInt($(this).val()); }); });
total
var будет содержать общее количество выбранных элементов выбранного элемента.
$(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');
to var $select = $('[name="acabados[]"]');
для выбора элементов select
с acabados[]
имени acabados[]
.
Если вы хотите получить значения в PHP, вы можете просто использовать $_POST['acabados']
и он будет содержать все значения, выбранные в каждом меню. См. Демонстрацию. Пока вы включаете []
после имени, он объединяет все значения для любого элемента с этим именем в один массив. Вы даже можете смешивать отдельные меню, входы и текстовые поля вместе!
Почему бы просто не дать им разные идентификаторы и сделать счет в jquery / javascript. В качестве альтернативы дайте им все одинаковые классы и сделайте .each (), чтобы захватить значения во всех них.