Pu sh поля ввода из выбранной строки таблицы в массив до l oop через - PullRequest
1 голос
/ 26 мая 2020

Я хотел бы добавить несколько полей ввода из моей таблицы (укажите c строку) в массив. Позже я хочу пропустить l oop через этот массив.

Я делаю это так:

let selectedTr = [];
let arr = [];

$('td input:checked').each(function() {
    selectedTr.push($(this).closest('tr'));
});

selectedTr.forEach((tr) => {
  td = tr.find('td:not(:first-child) input');

  td.each(function() {
    arr.push($(this));
  });
});

// Doesn't work if I define arr like above (error: arr.each is not a function, if I use `arr = $('form input')` it works perfectly for example)
arr.each(function() {
    ...
});

Вот короткая демонстрация на jsfiddle: https://jsfiddle.net/a4fpqynx/ PS: В jsfiddle я получаю: объект ошибки нельзя клонировать, если я использую console.log().

arr показывает что-то вроде (S в каждой строке):

0 S [<input type="text">] (1)
1 S [<input type="text">] (1)
...

но мне нужно ( только один S)

S
0 [<input type="text">]
1 [<input type="text">]
...

, поэтому я могу использовать arr.each. PS: arr.each(function() {}) находится внутри другой функции, которая вызывается из нескольких файлов для проверки полей ввода. Я использую это для входа в систему, таблиц и других форм. Как я могу этого добиться?

1 Ответ

0 голосов
/ 26 мая 2020
  const rowList = [...document.querySelectorAll('tr')]
  const inputList = rowList.filter(row => row.firstElementChild.firstElementChild.checked).map(row => {
      return [...row.querySelectorAll('input')]
  })
  console.log(inputList)
...