JavaScript « Проверка радиокнопок на checked
Код проверки радиокнопок постоянно говорит что не все радиокнопки выбраны, хотя они все выбраны. Как это исправить?
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
$('input[name^="vopros"]', '#online_test').each(function() {
if (!$(this).is("checked"))
{
alert ('Вы ответили не на все вопросы');
return false;
}
});
if (!$(this).is("checked"))
{
alert ('Вы ответили не на все вопросы');
return false;
}
});
1 ответов
$('table.assay tr').each(function(){
if ($(this).find('input[name^="vopros"]').length > 0 && $(this).find('input[name^="vopros"]:checked').length == 0) {
alert('Fail!');
return false;
}
});
if ($(this).find('input[name^="vopros"]').length > 0 && $(this).find('input[name^="vopros"]:checked').length == 0) {
alert('Fail!');
return false;
}
});
Без полного кода трудно ответить, но может быть так понятнее и короче?
if($('input[name^="vopros"]').size() != $('input[name^="vopros"]:checked').size() ){
alert ('Вы ответили не на все вопросы');
}
Сравниваем количество всех чекбоксов(я надеюсь у вас все чекбоксы начинаются с vopros) с количеством отмеченных.
UPD :
Теперь когда есть реальный пример, можно попробовать так
alert ('Вы ответили не на все вопросы');
}
Сравниваем количество всех чекбоксов(я надеюсь у вас все чекбоксы начинаются с vopros) с количеством отмеченных.
UPD :
Теперь когда есть реальный пример, можно попробовать так
$('table.assay tr').each(function(index){
if($('input[name^="vopros'+index+'"]:checked').size() == 0){
alert ('Вы ответили не на все вопросы');
return false;
}
});
if($('input[name^="vopros'+index+'"]:checked').size() == 0){
alert ('Вы ответили не на все вопросы');
return false;
}
});
У вас $('input[name^="vopros"]') возвращает все радиокнопки (то есть по 3 на вопрос, 63 в сумме)
$('input[name^="vopros"]:checked') возвращает только выбранные радиокнопки (то есть 1 на вопрос, 21 в сумме).
Поэтому условие не срабатывает.
Самое простое решение в лоб
if( ($('input[name^="vopros"]').size()/3) != $('input[name^="vopros"]:checked').size() )
А вообще я бы посоветовал количество вопросов по другому определять.
Обернуть каждый текстовый вопрос в и использовать в левой части условия
А вообще я бы посоветовал количество вопросов по другому определять.
Обернуть каждый текстовый вопрос в и использовать в левой части условия
$('span.vopros').size()