Следующий код не дает конкретного ответа на ваш вопрос, но может помочь. Я бы изменил это для вас, но сейчас у меня просто нет времени.
Я использую это на экзаменах, чтобы предупредить пользователя о том, что на конкретный вопрос нет выбранного ответа.
Вопросы генерируются динамически с использованием серверного элемента управления, который выдает простой xhtml. Я называю все варианты с одинаковым именем (Q1, Q2 ...) и идентифицирую их как (Q1a, Q1b ...)
Чтобы изменить его для своих целей, возможно, вы могли бы построить список выбранных опций в цикле j, то есть добавить пары имя-значение, где есть оператор "break".
// Grabs all inputs - radio, checkbox, text, buttons and lists -sticks them in an array
allInputs = document.getElementsByTagName("input");
var last = "NameUnlikelyToBeUsedAsAnElementName";
// walk through the array
for (i = 0; i< allInputs.length; i++)
{
var input = allInputs[i];
if (input.name == last) continue; // if this object name is the same as the last checked radio, go to next iteration
// checks to see if any one of similarly named radiobuttons is checked
else if (input.type == "radio" )
{
last = input.name;
var radios = document.getElementsByName(input.name);
var radioSelected=false;
//iterate over question options
for (j=0; j < radios.length; j++)
{
if(radios[j].checked)
{
radioSelected=true;
break; // Found it, proceed to next question
}
}
if (!radioSelected) // no option selected
{ // warn user, focus question
alert("You did not answer question " + input.id.substring(0,input.id.length-1));
input.focus();
return false;
}
}
}
return true;