如果未选中任何复选框,则将状态设置为0

时间:2013-09-21 03:06:52

标签: javascript jquery

grabData函数获取已选中复选框的值并将其提交给我的数据数组。我想知道的是,如果没有提交选中的复选框,我如何将state设置为0 - 如果没有选中,我还希望alert - 验证

   function grabData(checked){
        checked = typeof(checked) == 'undefined' ? false : checked;
        var items = document.getElementsByClassName('product_category_selector');
        var data  = [];

        for(var i = 0; i < items.length; i++){
            if(items[i].type != 'checkbox' || items[i].checked != checked){
                 continue;
            }

            data.push(items[i].getAttribute('data-id'));
        }

        return data;
    }
                $('body').on("click", "#brands_by_category_submit_btn", function (e) {
                     e.preventDefault();               
                    var self = $(this);
                    var box  = $("#catInfo"); 
                    var id = $("#manID").data("id");
                    var cat_id = grabData();

                    var url = $("#brands_by_category_submit_btn").data("url");

                    var data_array = { 
                            id : id, 
                            cat_id : grabData(true), 
                            state: 1
                        };

                            ajaxCall(url, data_array,'catInfo');

                });  

1 个答案:

答案 0 :(得分:2)

首先,您可以大大简化grabData功能。

function grabData(checked) {
    return $('.product_category_selector' + (checked? ':checked' : ':not(:checked)')).map(function (index, chk) {
        return $(chk).data('id');
    }).get();
}

然后在点击处理程序中你可以这样做:

var data = grabData(true); //get checked checkbox data-id values

console.log(data.length); //if 0, no items were checked