Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.05.2019, 11:48
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Подскажите как выделить все 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 записывались в массив.
Например пользователь поставил галочки на вторую и четвертую строку, чтобы и третья выбралась.

Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 07.05.2019, 12:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,128

Сообщение от Artur_Hopf
Как сделать так ...
Для начала хотя бы сделай полный тестовый пример.
Ответить с цитированием
  #3 (permalink)  
Старый 07.05.2019, 12:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Artur_Hopf,
выделение диапазона по двум кликам
Ответить с цитированием
  #4 (permalink)  
Старый 07.05.2019, 13:00
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

рони,
спасибо, попробую
Ответить с цитированием
  #5 (permalink)  
Старый 08.05.2019, 10:32
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Сделал так, все работает, вроде не слишком криворуко:
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;
                        }
                    });
                }    
            });
        }

Последний раз редактировалось Artur_Hopf, 08.05.2019 в 10:34.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать кнопки для переключения между найденными элементами? fizz5360 Общие вопросы Javascript 1 19.10.2018 09:45
Как сделать кроссбраузерный checkbox irkprin jQuery 7 29.06.2011 11:32
Подскажите как создать checkbox lor08 jQuery 5 18.08.2010 21:00
Подскажите, пжлст, как вывести в тот же документ результат ф-ции? LexXxeL Элементы интерфейса 4 13.05.2009 13:26
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37