Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите разобраться с чекбоксами (https://javascript.ru/forum/misc/23797-pomogite-razobratsya-s-chekboksami.html)

Vampir3 06.12.2011 21:44

Помогите разобраться с чекбоксами
 
<html>
<input type="checkbox" name="checkbox" id="cb1"><label for="cb1"> 1</font></label><br>
<input type="checkbox" name="checkbox" id="cb2"><label for="cb2"> 2</label><br>
<input type="checkbox" name="checkbox" id="cb3"><label for="cb3"> 3</label><br>
<input type="checkbox" name="checkbox" id="cb4"><label for="cb4"> 4</label><br>
<input type="checkbox" name="checkbox" id="cb5"><label for="cb5"> 5</label><br>
</html>


Вообщем есть 5 , чекбоксов. мне надо скриптрый бы делал не активными (disabled) 2 остальных элемента, если 3 любых чекбокса были бы checked

короче - я ставлю 3 любый чекбокса, а остальные 2 сразу "тухнут"
:help:

P.S. "Помогите!", "Не работает скрипт!", "Я нуб, нужен совет" :p

ksa 06.12.2011 21:53

Цитата:

Сообщение от Vampir3
короче - я ставлю 3 любый чекбокса, а остальные 2 сразу "тухнут"

Не совсем понятно...
Вот я начинаю выбирать чекбоксы... Сначала cb4, потом cb5, cb3. Вроде пока всё нормально. :) И вот я выбираю cb1 - что теперь должно произойти с чекбоксами?
Потом выбираю cb2 - что должно произойти?
Ну и контрольный! :0 Выбираю cb5 - что должно произойти?

Vampir3 06.12.2011 22:10

ну к примеру я выбираю cb1 - ничего не происxодит. выбираю cb2 - ничего не происxодит. выбираю cb3 - cb4, cb5 гаснут

devote 06.12.2011 22:43

ksa,
Да он хочет что бы выбрав три чекбокса остальные гасли... Тоесть нельзя выбрать больше трех чекбоксов...

...Мне лень писать пример

Vampir3 06.12.2011 22:53

Цитата:

Сообщение от devote (Сообщение 141110)
ksa,
Да он хочет что бы выбрав три чекбокса остальные гасли... Тоесть нельзя выбрать больше трех чекбоксов...

...Мне лень писать пример

ага, именно :) там через каждую ситуацию в if прописать?

что-то типа

if(cb1.checked==true || cb2.checked==true || cb3.checked==true){
cb4.disabled=true;
cb5.disabled=true;
}

и т.д?

devote 06.12.2011 23:09

Ну вот набросал что-то...

<html>
<body>
<input type="checkbox" name="checkbox" id="cb1"><label for="cb1"> 1</font></label><br>
 <input type="checkbox" name="checkbox" id="cb2"><label for="cb2"> 2</label><br>
 <input type="checkbox" name="checkbox" id="cb3"><label for="cb3"> 3</label><br>
 <input type="checkbox" name="checkbox" id="cb4"><label for="cb4"> 4</label><br>
 <input type="checkbox" name="checkbox" id="cb5"><label for="cb5"> 5</label><br>

<script type="text/javascript">
var cbs = [
        document.getElementById('cb1'),
        document.getElementById('cb2'),
        document.getElementById('cb3'),
        document.getElementById('cb4'),
        document.getElementById('cb5')
    ];

for(var i = 0; i < cbs.length; i++ ) {

    cbs[ i ].onclick = function() {

        var count_checked = 0;

        for(var i = 0; i < cbs.length; i++ ) {
            if ( cbs[ i ].checked ) {
               count_checked++;
            }
        }
        for(var i = 0; i < cbs.length; i++ ) {
            if ( count_checked >= 3 ) {
                if ( !cbs[ i ].checked ) cbs[ i ].disabled = true;
            } else {
                cbs[ i ].disabled = false;
            }
        }
    }
}
</script>

</body>
</html>

ksa 07.12.2011 09:11

Цитата:

Сообщение от devote
Тоесть нельзя выбрать больше трех чекбоксов...

Это-то я понял... :D
Вопрос как отключать уже выбраные, какие оставлять?

ksa 07.12.2011 09:13

Цитата:

Сообщение от devote
остальные гасли

Цитата:

Сообщение от devote
вот набросал что-то

Аааа дисейбл, вона чё... :)

Vampir3 07.12.2011 22:07

devote,спасибо) ты волшебник))

GuardCat 07.12.2011 22:16

Эх, а строки 31 -- 34 можно заменить на красивое
cbs[i].disabled = !cbs[i].checked;

devote 07.12.2011 22:21

GuardCat,
не получтиться, там проверка на if ( count_checked >= 3 ) {}, то есть дисаблим тока если чекнуто три

GuardCat 07.12.2011 22:32

Таки ну! Проверку на тройственность чекнутости не трогаем, речь о том, что внутри неё. Говорю же строки 31 -- 34. Или с телефона он мне неверно строки показывает?

devote 07.12.2011 22:36

Эх как жешь с вами тяжело, :agree: смотрим твое предложение:
<html> 
<body> 
<input type="checkbox" name="checkbox" id="cb1"><label for="cb1"> 1</font></label><br> 
 <input type="checkbox" name="checkbox" id="cb2"><label for="cb2"> 2</label><br> 
 <input type="checkbox" name="checkbox" id="cb3"><label for="cb3"> 3</label><br> 
 <input type="checkbox" name="checkbox" id="cb4"><label for="cb4"> 4</label><br> 
 <input type="checkbox" name="checkbox" id="cb5"><label for="cb5"> 5</label><br> 
  
<script type="text/javascript"> 
var cbs = [ 
        document.getElementById('cb1'), 
        document.getElementById('cb2'), 
        document.getElementById('cb3'), 
        document.getElementById('cb4'), 
        document.getElementById('cb5') 
    ]; 
  
for(var i = 0; i < cbs.length; i++ ) { 
  
    cbs[ i ].onclick = function() { 
  
        var count_checked = 0; 
  
        for(var i = 0; i < cbs.length; i++ ) { 
            if ( cbs[ i ].checked ) { 
               count_checked++; 
            } 
        } 
        for(var i = 0; i < cbs.length; i++ ) { 
            if ( count_checked >= 3 ) { 
                cbs[i].disabled = !cbs[i].checked;
            } 
        } 
    } 
} 
</script> 
  
</body> 
</html>


Надеюсь этого достаточно что бы ты понял в чем тут изюминка

GuardCat 07.12.2011 22:48

Да блин, я приделал else не к тому if'у мысленно, пардон. Переносы по ширине экрана на телефоне обманули нетренированный глаз. Эх, а так красиво придумал оптимизировать несуществующую конструкцию (вздыхает).


Часовой пояс GMT +3, время: 02:45.