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


Автор: serezhka1986 26.1.2012, 15:53
Есть массив значений. Мне необходимо отметить все чекбоксы value которых равны элементам массива.
Например, массив a = [68, 95, 110, 121]. Необходимо отметить такие чекбоксы
Код

<input type="checkbox" value="68"/>
<input type="checkbox" value="95"/>
<input type="checkbox" value="110"/>
<input type="checkbox" value="121"/>

Я думаю необходимо запустить цыкл с перебором элементов массыва и в нем отмечать нужные чекбоксы, но я не знаю как отметить именно нужный чекбокс. Подскажите как реализовать такую задачу!  smile 

Автор: $дмитрий 26.1.2012, 16:12
http://forum.vingrad.ru/forum/topic-345886.html

Автор: ksnk 26.1.2012, 16:27
На jQuery это можно записать так
Код

var arr=[68, 95, 110, 123]
$('input:checkbox').filter('[value='+arr.join('],[value=')+']').attr('checked','checked');

 

Автор: serezhka1986 26.1.2012, 16:45
Это получается что и цыкла не надо?

Автор: ksnk 26.1.2012, 17:03
serezhka1986, Самому писать цикл не надо, хотя что делается внутри jQuery, лучше не озвучивать  smile 

Автор: serezhka1986 26.1.2012, 17:10
Че-то не работает. Консоль хрома выдает Uncaught TypeError: Object function Array() { [native code] } has no method 'join'

Автор: serezhka1986 26.1.2012, 17:10
Че-то не работает. Консоль хрома выдает Uncaught TypeError: Object function Array() { [native code] } has no method 'join'

Автор: Krotlev 26.1.2012, 17:59
Код

<html>
<head>
    <title></title>
    <script type="text/javascript">
        if (!Array.prototype.indexOf)
            Array.prototype.indexOf = function(value) {
                for (var i = 0; i < this.length; i++)
                    if (this[i] === value)
                        return i;
                return -1;
            }

        function checkIt() {
            var arr = document.getElementById('checkedItems').value.split(/,\s*/);
            var items = document.getElementById('items');
            var checkboxes = items.getElementsByTagName('input');

            for (var i = 0; i < checkboxes.length; i++)
                checkboxes[i].checked = arr.indexOf(checkboxes[i].value) != -1;
        }

        window.onload = function() {
            var itemsEl = document.getElementById('items');
            for (var i = 1; i < 100; i++)
                itemsEl.innerHTML += '<input name="checkbox" type="checkbox" value="' + i + '">' + i + '<br>\n';
        }
    </script>
    <style type="text/css">
        .toolbox {
            position: fixed; float: left; top: 50px; left: 100px;
            border: solid 1px Silver; background: #f5f5f5; padding: 5px;
        }
        .toolbox span { cursor: pointer;  }
    </style>
</head>
<body>
<div class="toolbox">Values <input id="checkedItems" type="text" value="1, 10, 34" size="10">
    <span onclick="checkIt()">Check!</span></div>
<div id="items">
</div>
</body>
</html>

Автор: ksnk 26.1.2012, 18:19
Цитата(serezhka1986 @  26.1.2012,  17:10 Найти цитируемый пост)
 Консоль хрома выдает Uncaught TypeError: Object function Array() { [native code] } has no method 'join' 

Такое бывает, если написать Array.join, а не так как у меня.

Автор: serezhka1986 26.1.2012, 18:37
Не, ошибка не в том была. Я просто запхал массив php в javascript. Сформировал массив вида [1,2,3,4,5] и все нормально работает. Спасибо! Вы как всегда на высоте!  smile 

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