Подскажите как выделить все checkbox между выделенными вручную?
Добрый день.
Есть таблица с чекбоксами. По нажатию на них происходить запись id в массив. Выглядит это сейчас так: if(trCheck){ var result = []; [].forEach.call(trCheck, function(item, i) { checkBox = item.childNodes[0].childNodes[0]; if(checkBox){ checkBox.addEventListener('click', function() { if(this.checked){ id = this.parentNode.getAttribute("id"); result[i] = id; }else{ delete result[i]; } }); } }); return result; } Как сделать так, чтобы если галочки поставлены не друг рядом с другом их тоже выбирало и id записывались в массив. Например пользователь поставил галочки на вторую и четвертую строку, чтобы и третья выбралась. Заранее спасибо. |
Цитата:
|
Artur_Hopf,
выделение диапазона по двум кликам |
рони,
спасибо, попробую :thanks: |
Сделал так, все работает, вроде не слишком криворуко:
if(trCheck){ var result = []; [].forEach.call(trCheck, function(item) { checkBox = item.childNodes[0].childNodes[0]; if(checkBox){ checkBox.addEventListener('click', function() { var num = 0; [].forEach.call(trCheck, function(items) { check = items.childNodes[0].childNodes[0]; if(check.checked === true){ num++ } }); if(num > 1){ if(this.checked){ var union = 0; [].forEach.call(trCheck, function(items, i) { id = items.childNodes[0].getAttribute("id"); check = items.childNodes[0].childNodes[0]; if(check.checked === true){ result[i] = id; union++; }else{ if(union > 0 && union < num){ check.checked = true; result[i] = id; } } }); }else{ [].forEach.call(trCheck, function(items) { check = items.childNodes[0].childNodes[0]; check.checked = false; result = []; }); } return result; } }); } }); } |
Часовой пояс GMT +3, время: 05:28. |