Выбор всех Select
Здравствуйте, подскажите как можно перебрать все селекты по очереди и взять из них активное значение.
div id="option-228" - этот и подобные изначально неизвестны id у select - изначально неизвестно name у select - изначально неизвестно <form id="new" action=""> <div id="option-228" class="option"> <span class="required">*</span> <select class="sel_opt" id="228" name="option[228]"> <option value=""> первый </option> <option value="19">второй</option> </select> </div> <br> <div id="option-217" class="option"> <span class="required">*</span> <b>Select:</b><br> <select class="sel_opt" id="217" name="option[217]"> <option value=""> Blue </option> <option value="4">Red </option> <option value="3">Green</option> </select> </div> <br> <div id="option-227" class="option"> <span class="required">*</span> <b>Select:</b><br> <select class="sel_opt" id="227" name="option[227]"> <option value="">Выбор 1</option> <option value="17">Выбор 2</option> <option value="18">Выбор 3</option> </select> </div> </form> |
kvaleksandr,
var sel = document.getElementById("new").getElementsByTagName("select"), sel_leng = sel.length, mas_sel = []; for (i=0; i < sel_leng; i++) { mas_sel.push(sel[i].value); } или можно по классу... |
Пробую
$('select.sel_opt').bind('change', function() { var sel = document.getElementById("new").getElementsByTagName("select"), sel_leng = sel.length, mas_sel = []; for (i=0; i < sel_leng; i++) { mas_sel.push(sel[i].value); } alert(sel); $('#new_price').text(sel); }); через alert выдается такое вот, может я чего неправильно делаю? ощущение что в sel передается массив, только вот как его потом оттуда извлечь? ![]() |
У вас же кнопка отправить будет, зачем вы постоянно обращаетесь к заполнению массива, жесть.
Когда можно при отправки заполнить массив, проверив, что выбрана не пустота и радоваться. |
Цитата:
$('#new_price').text(sel); должен помещаться результат обработки всех селектов. Суть задачи такая. есть изначально неизвестное количество селектов, в каждом селекте хранится параметр с цифрой. Мне необходимо суммировать все селекты и вывести в отдельный див. |
kvaleksandr, вы скажите почему выводите sel, а не mas_sel ? для чего по вашему в цикле массив собирается?)
|
Цитата:
|
Когда пытаюсь вытащить value из вашего примера, то все работает на отлично, но как пытаюсь вытащить текст, то значения выходят пустые.
var sel = document.getElementById("new").getElementsByTagName("select"), sel_leng = sel.length, mas_sel = []; for (i=0; i < sel_leng; i++) { mas_sel.push(sel[i].Text); } перепробовал несколько вариантов, но значения кроме как из value прочитать не удается( |
kvaleksandr, если память не изменяет, то не Text, а text
|
Цитата:
|
kvaleksandr,
mas_sel.push(sel[i].options[sel[i].selectedIndex].text); |
Цитата:
|
<head> <script src="http://code.jquery.com/jquery-latest.min.js"></script> <script> jQuery(function ($) { $('form#new').bind('change', function () { var els = $('form#new option:selected'); alert(els.text()); alert(els[2].textContent + '; ' + els[2].value); }); }); </script> </head> <form id="new" action=""> <div id="option-228" class="option"> <span class="required">*</span> <select class="sel_opt" id="228" name="option[228]"> <option value=""> первый </option> <option value="19">второй</option> </select> </div> <br> <div id="option-217" class="option"> <span class="required">*</span> <b>Select:</b><br> <select class="sel_opt" id="217" name="option[217]"> <option value=""> Blue </option> <option value="4">Red </option> <option value="3">Green</option> </select> </div> <br> <div id="option-227" class="option"> <span class="required">*</span> <b>Select:</b><br> <select class="sel_opt" id="227" name="option[227]"> <option value="">Выбор 1</option> <option value="17">Выбор 2</option> <option value="18">Выбор 3</option> </select> </div> </form> |
Часовой пояс GMT +3, время: 17:28. |