2016-10-26 2 views
0

Я построил викторину с несколькими вариантами выбора. В некоторых ответах есть радио-боксы, у других есть флажки, так как есть несколько правильных ответов. Я ранее использовал скрипт, чтобы получить идентификатор всех: проверенных входов и поместить их в массив для отправки на сервер для оценки.Как подключить радио/вкладки checkbox и отодвинуть идентификатор выбранных в массивы

Массив выглядел следующим образом:

userAnswers = [ '1c', '2d', '3a', '3b', '3c', '3d', '4b', '5c', '5d', '6d' ] 

мне удалось довольно легко перебрать все из: проверено входы и добавить их HTML идентификатор в массив, но мне нужно, чтобы изменить структуру данных, так легче оценить ответы на сервере.

Я пытаюсь изменить структуру данных на следующее:

answers = [ 
    ['c'], // Question 1 answers 
    ['d'], // Question 2 answers 
    ['a', 'b', 'c', 'd'], // 3 
    ['b'], // 4 
    ['c', 'd'], // 5 
    ['d'], // 6 
] 

Чтобы сделать это, я пытаюсь создать цикл, который находит все: проверен входы на основе их [данные-Вопрос- number], а затем добавляет их html ID в массив, а затем добавляет этот массив в массив, как указано выше.

До сих пор ближе у меня следующий:

let numberOfQuestions = Assessments.findOne().numQuestions; //returns the number of questions in the quiz e.g '25' 
let selectedAnswers = []; 

for(let i = 1; i <= numberOfQuestions; i++) { 
    let answers = $("input[data-question-number=" + i + "]:checked").attr('id'); 
} 

Это почти работает, за исключением того, что проблема в том, что .attr() возвращает только первый атрибут, который соответствует, поэтому в некоторых из моих вопросов, где есть 4 флажка, и пользователь, возможно, проверил 3 из них, я только вернусь ко мне первым.

Если кто-то может помочь мне mofidy это, чтобы он вставлял id из всех: проверенные входы, которые были бы удивительными. Благодаря!

ответ

2
let answers = [] 
for(let i = 1; i <= numberOfQuestions; i++) { 
    let temp = [] 
    $("input[data-question-number=" + i + "]:checked").each(function() { 
     temp.push(this.id) 
    }); 
    answers.push(temp) 
} 
+0

Awesome, это работает отлично. Спасибо! – Sean

1

Вам нужно будет зациклировать полученные результирующие элементы, чтобы получить идентификатор один за другим.

for(let i = 1; i <= numberOfQuestions; i++) { 
    let answers = [] 
    $("input[data-question-number=" + i + "]:checked").each(function() { 
     answers.push(this.id) 
    }); 
} 
+0

Спасибо, это, безусловно, помогло, но ответ я принял 100% решить эту проблему. Очень ценится, хотя – Sean

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

  • Нет связанных вопросов^_^