Установка состояния в 0, если флажки не установлены

0

Функция 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 ответ

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
  • 0
    Благодаря функции, написанной другим членом SO с data.length , я обработал бы это с помощью оператора if, если его = 0?
  • 0
    @JessMcKenzie Да, именно так, однако вам не нужно проверять, точно ли он равен 0, поскольку в JavaScript 0 ложно, что означает, что Boolean(0) равно false . Запись if (0) совпадает с if (Boolean(0)) , так что вы можете просто сделать if (data.length) . Также может быть полезна var state = data.length? 1 : 0; , например, var state = data.length? 1 : 0; который установит состояние на 0, когда длина равна 0, и 1, когда это не так.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню