JQuery, чтобы определить, все ли списки флажков (в div) были проверены - PullRequest
0 голосов
/ 26 октября 2010

Я пытаюсь использовать jQuery для проверки формы;Мне нужен метод, где я могу проверить, если все элементы управления в были заполнены \ выбраны.CheckBoxLists, поддерживаемые моим приложением, доставляют мне трудности, так как кажется, что jQuery любит обращаться к каждому флажку индивидуально, но мне действительно нужно оценить все CBL в div и узнать, был ли установлен хотя бы один отдельный флажок для каждого из них.

Я могу назвать DIV и отдельные идентификаторы CBL по своему усмотрению (как и CBL1, CBL2 и т. Д.).Мне действительно нужен способ разобрать все в

Ответы [ 4 ]

2 голосов
/ 26 октября 2010

Предполагая, что ASP анализирует ваш CBL следующим образом:

<h2>Interests</h2>
<ul id='CBL1' class='checkboxlist'>
    <li><input type='checkbox' name='interest' value='javascript'> JavaScript</li>
    <li><input type='checkbox' name='interest' value='jquery'> jQuery</li>
</ul>
<h2>Hobbies</h2>
<ul id='CBL2' class='checkboxlist'>
    <!-- subsequent data -->

Вы можете проверить это следующим образом:

function validateCBLs() {
    var $lists = $('ul.checkboxlist');
    $lists.each(function(i, item) {
        if ($(item).find(':checked').length < 1) {
            //Show user an error, etc
            alert('Please, check at least one item from ' + $(item).attr('id'));
        }
    });
}

JSFiddle: Здесь

0 голосов
/ 26 октября 2010

Попробуйте:

$('.checkboxlist').filter(function(){
            return $(this).find(':checked').size()>0;
        }).size()

Это даст вам количество CBL, у которых установлен хотя бы один флажок.

0 голосов
/ 26 октября 2010
function hasBoxesChecked(id) {
  return $(":checkbox:checked", document.getElementById(id)).length > 0;
}

Вот демоверсия

0 голосов
/ 26 октября 2010

Вы должны иметь по крайней мере 1 флажок в каждом выбранном списке.Интересно, сработает ли это (сделать так, чтобы все CBL имели идентификатор, начинающийся с 'CBL' (например, CBL1, CBL2, ...)):

var valid = true;
$('[id^="CBL"]').each(function(i,v){
    valid = valid && ($(this).find(':checkbox:checked').size() >= 1);
});
alert(valid);

JSFiddle

...