Функция 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');
});
Ну, в первую очередь, вы можете значительно упростить свою функцию 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
data.length
, я обработал бы это с помощью оператора if, если его = 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, когда это не так.