Как я могу поставить галочку, если у меня есть массив значений? - PullRequest
4 голосов
/ 23 января 2012

У меня есть следующие вставки!

<input type="checkbox" value="1" />
<input type="checkbox" value="2" />
<input type="checkbox" value="3" />
<input type="checkbox" value="4" />
<input type="checkbox" value="5" />

После использования jQuery я хочу, чтобы мой результат выглядел так:

<input type="checkbox" value="1" checked />
<input type="checkbox" value="2" />
<input type="checkbox" value="3" checked  />
<input type="checkbox" value="4" />
<input type="checkbox" value="5" checked />

Я использую следующий код, но он не работает.

$(document).ready(function() { 
    var str = '1,3,5';
    var temp = new Array();
    temp = str.split(",");
    for (a in temp ) {
        //$('.check').valueOf().checked;
        $('.check').val(append(temp[a])).checked;
        //$('#c').append();
    }
});

Заранее спасибо!

Ответы [ 4 ]

7 голосов
/ 23 января 2012

Описание

Вы можете перебрать свой массив с помощью for(i=0;i!=temp.length;i++) и использовать селектор атрибутов, чтобы установить правильный флажок.

Проверьте мой пример и эту демонстрацию jsFiddle

Пример

$(document).ready(function() { 
    var str = '1,3,5';
    var temp = new Array();
    temp = str.split(",");
    for (i=0; i!=temp.length;i++) {
        var checkbox = $("input[type='checkbox'][value='"+temp[i]+"']");
        checkbox.attr("checked","checked");
    }
});

Дополнительная информация

1 голос
/ 23 января 2012

Попробуйте:

$(document).ready(function(){
    $("input[type='checkbox']").each(function(){
        if( $(this).index() % 2 == 0 ){
            $(this).attr('checked','checked');
        }
     });
});

Вы можете поиграть с скрипкой здесь - http://jsfiddle.net/EuXQF/

1 голос
/ 23 января 2012

Я должен спросить, как именно вы ожидаете, что это сработает?Для начала вы вызываете элементы с именем класса check, которого нет ни у одного из ваших элементов, тогда у вас просто оператор без какого-либо присваивания или чего-то еще ... Вы также создаете массив, который просто выбрасываетсяпрочь, потому что split создает новый массив.Кроме того, вместо разделения строк, что-то вроде var temp = [1,3,5]; будет работать нормально ... И, наконец, вы используете for...in для массива, что плохо, поскольку массивы имеют свойства помимо своих ключей (например, length и несколько методов).) ...

В любом случае, вам нужно что-то вроде:

(function() {
    var elms = document.querySelectorAll('input[type=checkbox]'), l = qsa.length, i;
    for( i=0; i<l; i++) {
        elms[i].checked = (elms[i].value % 2 == 1);
    }
})();
0 голосов
/ 07 декабря 2016
$(document).ready(function(){
    var array = "1,3,5,2";
    check_value(array);
});
    function check_value(val){
        var array = val.split(",");
        for (i=0;i<array.length;i++){
             //alert(array[i]);

             $("input[type='checkbox']").each(function(){
                if( $(this).val() == array[i]){
                    $(this).attr('checked','checked');
                }
             });
        }
    }
...