2009-08-04 2 views
18

Мне просто интересно, можно ли пройти несколько вариантов выбора и получить их значения и текст (если один из них выбран, получите значение и текст, если выбрано 2, значения и текст и т. д.)Как выполнить итерацию с помощью нескольких опций выбора с помощью jquery

У меня есть 15 выборок в одной странице?

любая помощь будет оценена.

<form> 
     <select class="select" name="select3" id="select3"> 
      <option value="0">0</option> 
      <option value="1.99">1</option> 
      <option value="1.99">2</option> 
      <option value="1.99">3</option> 
      <option value="1.99">4</option> 
      <option value="1.99">5</option> 
      <option value="1.99">6</option> 
      <option value="1.99">7</option> 
      <option value="1.99">8</option> 
     </select> 
     </form> 

    <form> 
     <select class="select" name="select" id="select"> 
      <option value="0">0</option> 
      <option value="1.99">1</option> 
      <option value="1.99">2</option> 
      <option value="1.99">3</option> 
      <option value="1.99">4</option> 
      <option value="1.99">5</option> 
      <option value="1.99">6</option> 
      <option value="1.99">7</option> 
      <option value="1.99">8</option> 
      </select> 
    </form> 

все варианты выбора имеют один и тот же класс.

благодаря

ответ

40

Это предупредит весь текст и значения выбранных опций (для всех выбирает на странице):

$('select > option:selected').each(function() { 
    alert($(this).text() + ' ' + $(this).val()); 
}); 

См Ядра/каждый и селекторы/отмеченными:

http://docs.jquery.com/Core/each

http://docs.jquery.com/Selectors/selected

+0

не должна быть: $ ('# выберите> ... – jon

+0

Сво плохо определены USECASE, где класс, имя, идентификатор и тег все равно имя ($ select), $ ('# select> ..., $ (. select ... все будет работать –

3

Эта функция вернет массив пар текста/значения для выбора, соответствующего данному классу.

function getSelects(klass) { 
    var selected = []; 
    $('select.' + klass).children('option:selected').each(function() { 
     var $this = $(this); 
     selected.push({ text: $this.text(), value: $this.val() }); 
    }); 
    return selected; 
} 
0
//Another option 

var selected = []; 

$('select :has(:selected)').each(function(){ 

    var $this = $(this); 
    selected.push({ text: $this.text(), value: $this.val()); 

}); 

return selected; 
2

Если все отборных коробки начать с аналогичным идентификатором ("select_1", "select_2", "select_3", и т.д.), вы можете просто сделать:

var arr = []; 
$("select[id^='select_']").children('option:selected').each(function(){ 
    //you will do this once for every selected item... 
} 

Этот позволяет вам прокручивать только определенные поля выбора, если у вас есть несколько групп.

+0

Спасибо за ответ. могу ли я использовать функцию .change также в коде выше , как .... .change.each (функция() { – amir

+0

хорошо, если вы обертываете изменение анонимной функции да .change (function() { $ ('select'). каждый ..... }); – redsquare

6

для optgroups ...

$("select[id^='desu']").children('optgroup').children('option:selected').each( 
    function(id, element) { 
     document.write(element.title); 
    } 
); 
+0

Спасибо за это Монтана! –

+0

aha the children() function - именно то, что я искал! –

Смежные вопросы