Подскажите как выделить все 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, время: 02:49. |