Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проверить value чекбоксов (https://javascript.ru/forum/events/36565-proverit-value-chekboksov.html)

vaiswall 19.03.2013 23:31

Проверить value чекбоксов
 
Доброе время суток!
Столкнулся с такой проблемой!
допустим имеется несколько инпутов-чекбоксов
<input type="checkbox" name="chekchek[]" value="Посудомоечная машина">&nbsp;&nbsp;Посудомоечная машина<br>
            <div class="e43"></div>
            <input type="checkbox" name="chekchek[]" value="Камин">&nbsp;&nbsp;Камин<br>
            <div class="e43"></div>
            <input type="checkbox" name="chekchek[]" value="Персональный компьютер">&nbsp;&nbsp;Персональный компьютер<br>
            <div class="e43"></div>

Делаем волшебство с аякс
$(document).ready(function(){
            $.post("chek.php",
                {
                    param1:'<?echo $_GET['id_mess'];?>'
                },
                function(data,status){
                    vh(data);
                });
        });

В ответ получаем строку. Разбиваем ее на массив, в каждой ячейки значение, которое есть в value chekbox нашей формы.
Описываем функцию, в которую передали нашу строку
function vh(a)
    {
        var r = a.split(',');
        var mas=document.querySelectorAll("input[type='checkbox']")
        var len=mas.length;
        var len2= r.length;
        for (var t=0; t<=len2; t++)
        {
        for(var i=0;i<len;i++)
        {
            alert (mas[i].value);
            alert (r[t]);
            if (mas[i].value == r[t]){
                mas[i].checked = true;
            }
        }
        }
    }

Совпадающие значения value чекбоксов с элементами массива должны быть чекнуты. Однако, чекуется 1 первый совпавший элемент массива. Дальше дело не идет. Что делать? Заранее спасибо за помощь!

рони 19.03.2013 23:57

Цитата:

Сообщение от vaiswall
t<=len2

тут равно ненужно -- а так всё работает ... но можно чуть иначе 2 цикла вместо множества циклов
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
</head>

<body>
<input name="" type="checkbox" value="test">
<input name="" type="checkbox" value="test">
<input name="" type="checkbox" value="test">
<input name="" type="checkbox" value="next">
<input name="" type="checkbox" value="next">
<input name="" type="checkbox" value="go">
<script>
function vh(b) {
    var a = b.split(",");
    b = document.querySelectorAll("input[type='checkbox']");
    for (var e = b.length, f = a.length, d = {}, c = 0; c < f; c++) d[a[c]] = !0;
    for (a = 0; a < e; a++) d[b[a].value] && (b[a].checked = !0)
};
vh('test,go')
</script>
</body>

</html>

vaiswall 20.03.2013 13:55

у меня почему-то чекается только 1 элемент...

рони 20.03.2013 14:18

vaiswall,
чему равна data?


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