Флажок счетчика Javascript установлен

Я знаю, что у @stackoverflow может быть несколько похожих вопросов, но я пока не нашел решения своей проблемы: s

<?php
while($rowVideo = mysql_fetch_array($ResultQueryVideo))
{
?>
<input type="checkbox" name = "checkbox-1[]" class="checkbox" value ="<?php echo $rowVideo['idVideo'] ?>" /> <?php....some code...

Это приводит к нескольким флажкам, тому же номеру, что и idVideo ... вот в чем дело.

Теперь перед отправкой мне нужно убедиться, что хотя бы один флажок установлен. Но у меня не получилось :x

function isCountCheck (helperMsg) {
    var chkCnt = 0;
    var Frm = document.forms[0];
    var dLen = Frm.length - 1;
    for (i=0;i<=dLen;i++) {
        if(document.form1.["checkbox-1[]"].checked) chkCnt++;
    }

    if (chkCnt>0) {
        return true;
    } else {
        alert(helperMsg);
        return false;
    }
}

Дополнительные сведения: имя формы = "form1"

Можете ли вы меня немного направить? Спасибо

РЕДАКТИРОВАТЬ:

function isCountCheck(){
    if($("input[type=checkbox]:checked").length > 0)
    {
    return true;
    }
    else
    {
    alert('Invalid');
    return false;
    }
}

Но все еще не работает.. даже это предупреждение отображается..


person user1148875    schedule 07.08.2012    source источник
comment
что такое document.addemisao?   -  person Andreas Wong    schedule 07.08.2012
comment
В коде вашего обновления используется jQuery. Включили ли вы библиотеку jquery.js на свою страницу?   -  person nnnnnn    schedule 07.08.2012


Ответы (3)


Основная проблема заключается в том, что вы не используете индекс i в цикле для ссылки на отдельные флажки, и у вас есть . непосредственно перед [, что является синтаксической ошибкой. Итак, измените:

if(document.form1.["checkbox-1[]"].checked) chkCnt++;

To:

if(document.form1["checkbox-1[]"][i].checked) chkCnt++;

Но вы можете упорядочить функцию следующим образом:

function isCountCheck(helperMsg) {
    var i, dLen = document.form1["checkbox-1[]"].length;
    // if the length property is undefined there is only one checkbox
    if (typeof dLen === "undefined") {
        if (document.form1["checkbox-1[]"].checked) return true;
    }
    else {
        for (i = 0; i < dLen; i++) {
            if (document.form1["checkbox-1[]"][i].checked) return true;
        }
    }
    alert(helperMsg);
    return false;
}

Демонстрация: http://jsfiddle.net/nnnnnn/ZjK3w/1/

Или просто переберите все входные данные в форме, проверяя тип (и/или имя) каждого из них:

function isCountCheck(helperMsg) {
    var i, len, inputs = document.form1.getElementsByTagName("input");
    for (i = 0, len = inputs.length; i < len; i++) {
        if (inputs[i].type === "checkbox"
            && inputs[i].checked)
            return true;
    }
    alert(helperMsg);
    return false;
}

Демонстрация: http://jsfiddle.net/nnnnnn/ZjK3w/2/

person nnnnnn    schedule 07.08.2012
comment
дело в том, что у меня есть только один <input type="checkbox">, и из-за while может появиться 3 или 5 наших дополнительных флажков, зависит от количества строк idVideo, которые я получил. - person user1148875; 07.08.2012
comment
Вот так: ЕСЛИ у меня есть 3 видео - появляется галочка 3. ЕСЛИ у меня есть 1 видео - показывается только 1 checkbx. И это работает нормально. Поэтому я не могу решить свою проблему так, как вы предлагаете. Спасибо, в любом случае - person user1148875; 07.08.2012
comment
Привет, я думаю, это сработало :) Спасибо. И спасибо stackoverflow! - person user1148875; 08.08.2012

Самое простое решение:

var form = document.forms[0]; // your form element (whatever)
var checkedElms = form.querySelectorAll(':checked').length;

Нет необходимости в jQuery. Поддерживается вплоть до IE8. используйте polyfill для старых браузеров, если хотите.

person vsync    schedule 24.03.2014

Используйте JQuery:

function isCountCheck(helperMsg){
    if($("input[type=checkbox]:checked").length > 0)
        return true;
    alert(helperMsg);
    return false;
}
person N. Taylor Mullen    schedule 07.08.2012
comment
Работает не переживайте=). Вы, должно быть, забыли включить библиотеку JQuery в свою демонстрацию. Я добавил свою функцию выше в ваш JSFiddlle: jsfiddle.net/cHxFJ/1 - person N. Taylor Mullen; 07.08.2012