Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Кол-во отмеченных чекбоксов


Автор: Bolt 19.7.2006, 18:16
Доброго времени суток!

у меня в форме есть две группы чекбоксов:
name="reader|1"
name="writer|1"
...
...
name="reader|435"
name="writer|435"
--------------------------
т.е. чекбоксов может быть от 30(минимум) до 500(по 250 в каждой группе: "reader" и "writer" соответственно)
каким образом посчитать кол-во выделенных чекбоксов и отключить все остальные в этой группе(именно в одной из двух. в каждой из групп можно выделить по 15), если выделенных больше 15?
как только кол-во выделенных == 15 для остальных в этой группе делаем disabled.
мой JS - увы - далек от совершенства, а на эксперименты практически не осталось времени.

спасибо.

Автор: Burrr 19.7.2006, 19:01
Лови:
Код

<body>
<script type="text/javascript">
var maxReader = 15;
var maxWriter = 15;
function checkState(chcb) {
    var form = document.forms["oForm"];
    var readerCont = 0;
    var writerCont = 0;
    for(i = 0; i < form.elements.length; i++) {
        if (form.elements[i].type == "checkbox" && form.elements[i].name.indexOf("reader") != -1 && form.elements[i].checked) {
            readerCont++;
        } else if (form.elements[i].type == "checkbox" && form.elements[i].name.indexOf("writer") != -1 && form.elements[i].checked) {
            writerCont++;
        }
    }
    if (readerCont < maxReader) disableCheckGroup("reader", false);
    else disableCheckGroup("reader", true);
    if (writerCont < maxWriter) disableCheckGroup("writer", false);
    else disableCheckGroup("writer", true);
}
function disableCheckGroup(namePart, flag) {
    var form = document.forms["oForm"];
    for(i = 0; i < form.elements.length; i++) {
        if (form.elements[i].type == "checkbox" && form.elements[i].name.indexOf(namePart) != -1 && !form.elements[i].checked) {
            form.elements[i].disabled = flag;
        }
    }
}
</script>
<form name="oForm">
<table border="1"><tr>
    <td>
        <input type="checkbox" name="reader|1" onclick="checkState()"><br>
        <input type="checkbox" name="reader|2" onclick="checkState()"><br>
        <input type="checkbox" name="reader|3" onclick="checkState()"><br>
        <input type="checkbox" name="reader|4" onclick="checkState()"><br>
        <input type="checkbox" name="reader|5" onclick="checkState()"><br>
        <input type="checkbox" name="reader|6" onclick="checkState()"><br>
        <input type="checkbox" name="reader|7" onclick="checkState()"><br>
        <input type="checkbox" name="reader|8" onclick="checkState()"><br>
        <input type="checkbox" name="reader|9" onclick="checkState()"><br>
        <input type="checkbox" name="reader|10" onclick="checkState()"><br>
        <input type="checkbox" name="reader|11" onclick="checkState()"><br>
        <input type="checkbox" name="reader|12" onclick="checkState()"><br>
        <input type="checkbox" name="reader|13" onclick="checkState()"><br>
        <input type="checkbox" name="reader|14" onclick="checkState()"><br>
        <input type="checkbox" name="reader|15" onclick="checkState()"><br>
        <input type="checkbox" name="reader|16" onclick="checkState()"><br>
        <input type="checkbox" name="reader|17" onclick="checkState()"><br>
        <input type="checkbox" name="reader|18" onclick="checkState()"><br>
        <input type="checkbox" name="reader|19" onclick="checkState()"><br>
        <input type="checkbox" name="reader|20" onclick="checkState()"><br>
        <input type="checkbox" name="reader|21" onclick="checkState()"><br>
        <input type="checkbox" name="reader|22" onclick="checkState()"><br>
        <input type="checkbox" name="reader|23" onclick="checkState()"><br>
        <input type="checkbox" name="reader|24" onclick="checkState()"><br>
        <input type="checkbox" name="reader|25" onclick="checkState()"><br>
    </td><td>
        <input type="checkbox" name="writer|1" onclick="checkState()"><br>
        <input type="checkbox" name="writer|2" onclick="checkState()"><br>
        <input type="checkbox" name="writer|3" onclick="checkState()"><br>
        <input type="checkbox" name="writer|4" onclick="checkState()"><br>
        <input type="checkbox" name="writer|5" onclick="checkState()"><br>
        <input type="checkbox" name="writer|6" onclick="checkState()"><br>
        <input type="checkbox" name="writer|7" onclick="checkState()"><br>
        <input type="checkbox" name="writer|8" onclick="checkState()"><br>
        <input type="checkbox" name="writer|9" onclick="checkState()"><br>
        <input type="checkbox" name="writer|10" onclick="checkState()"><br>
        <input type="checkbox" name="writer|11" onclick="checkState()"><br>
        <input type="checkbox" name="writer|12" onclick="checkState()"><br>
        <input type="checkbox" name="writer|13" onclick="checkState()"><br>
        <input type="checkbox" name="writer|14" onclick="checkState()"><br>
        <input type="checkbox" name="writer|15" onclick="checkState()"><br>
        <input type="checkbox" name="writer|16" onclick="checkState()"><br>
        <input type="checkbox" name="writer|17" onclick="checkState()"><br>
        <input type="checkbox" name="writer|18" onclick="checkState()"><br>
        <input type="checkbox" name="writer|19" onclick="checkState()"><br>
        <input type="checkbox" name="writer|20" onclick="checkState()"><br>
        <input type="checkbox" name="writer|21" onclick="checkState()"><br>
        <input type="checkbox" name="writer|22" onclick="checkState()"><br>
        <input type="checkbox" name="writer|23" onclick="checkState()"><br>
        <input type="checkbox" name="writer|24" onclick="checkState()"><br>
        <input type="checkbox" name="writer|25" onclick="checkState()"><br>
    </td>
</tr></table>
</form>
</body>
 

Автор: Bolt 21.7.2006, 11:04
Burrr, реально работающий пример.
Спасибо, мегачеловечище.
 smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)