2014-02-18 3 views
1

Я пытаюсь создать контрольную функцию, чтобы проверить, что пользователь выбирает по крайней мере ожидаемую опцию из списка выбора.jQuery: selected всегда возвращает первый вариант

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

Пример: для списка выбора с 1: 'foo' и 2: 'bar', предупреждение возвращает меня «foo», даже если я выбрал «bar» в первом списке выбора, но это правильно для следующего выбора значения.

$(document).on("click", "#submit", function() { 
     var n = 0; 
     for (var p = 0; p < index; p++) { 
      var selectValue = $('#multiple_answer_'+p+'_option :selected').val(); 
      n++; 
      alert('option '+n+' : '+selectValue) 
     } 
}); 
+0

Может йо u создать скрипку для этого? Я не уверен, что понимаю проблему – tewathia

ответ

0

Если your'e с помощью .val() для извлечения значения отборного нет никакой необходимости для :selected

var selectValue = $('#multiple_answer_'+p+'_option').val(); 

JS Fiddle:http://jsfiddle.net/aAURL/1/

отметить также массив индексируется нулем, поэтому элементы id должны начинаться с multiple_answer_0_option.

+0

Действительно, работает без: выбрано, но у меня все еще есть первый вариант для моего первого списка выбора. –

+0

@SirBeute Началось ли ваше id с 0, что означает 'multiple_answer_0_option'? –

+0

да, все. –

0

Это потому, что вы выбираете $ ('# multiple_answer _' + p + '_ option' ..., который только один на вашей странице. '#' Добавляется до значения id элемента, и это значение должно быть уникальным .

Вы должны лучше использовать 'класс' или другой атрибут, который не должны быть уникальными, чтобы сделать выбор.

0

Попробуйте

$('#submit').change(function(){ 
    var text = $(this).val(); 
    alert(text); 
}); 

Fiddle Demo

+0

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

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