Intereting Posts

Получать значения из нескольких полей выбора с одинаковым именем? Включая его значение с jquery и 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, что когда-либо проще. Спасибо заранее за любую помощь!!

Попробуйте это, он будет работать и для динамически созданных элементов выбора.

 $(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 (), чтобы захватить значения во всех них.