Я не могу получить содержимое моей таблицы jquery - PullRequest
1 голос
/ 21 ноября 2019

каждый

Я отчаянно пытаюсь выяснить, как извлечь через таблицу только те строки, которые заполнены входным значением. Я хочу иметь возможность получить первый столбец (текст) ивторой столбец (значения входов) Это мой HTML-код. Заранее спасибо.

<table id="TableSelect">
<tbody>
<tr>
<th>name</th>
<th>price</th>
<th>qte</th>
</tr>
<tr>
    <td class="tdQuantite"> Dell Latitude 7390</td>
    <td><input type="text" size="5" data="qte" name="QUANTITE_300" value="" class="stock"> </td>
    <td class="tdQuantite">61</td>
</tr>

<tr>
    <td class="tdQuantite"> Dell Latitude 7490</td>
    <td><input type="text" size="5" data="qte" name="QUANTITE_300" value="" class="stock"> </td>
    <td class="tdQuantite">61</td>
</tr>

<tr>
    <td class="tdQuantite"> Dell Latitude 5590</td>
    <td><input type="text" size="5" data="qte" name="QUANTITE_300" value="" class="stock"> </td>
    <td class="tdQuantite">61</td>
</tr>
<tbody>
</table>

Это мой код в jquery.

var Qte = $('#TableSelect tr:not(:first-child) td input').filter(function(){

      return $(this).val();

        })  ;

        console.log(Qte);

Ответы [ 2 ]

0 голосов
/ 21 ноября 2019

Вы должны фильтровать <tr>, а не <input>. Затем вы можете использовать .map() для получения содержимого нужных столбцов из этих строк.

var qDE =
  $("#TableSelect tr:not(:first-child)").filter(function() {
    return $(this).find("input").val();
  }).map(function() {
    return {
      item: $(this).find(".tdQuantite").first().text(),
      quantity: $(this).find("input").val()
    };
  }).get();
console.log(qDE);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="TableSelect">
  <tbody>
    <tr>
      <th>name</th>
      <th>price</th>
      <th>qte</th>
    </tr>
    <tr>
      <td class="tdQuantite"> Dell Latitude 7390</td>
      <td><input type="text" size="5" data="qte" name="QUANTITE_300" value="10" class="stock"> </td>
      <td class="tdQuantite">61</td>
    </tr>

    <tr>
      <td class="tdQuantite"> Dell Latitude 7490</td>
      <td><input type="text" size="5" data="qte" name="QUANTITE_300" value="" class="stock"> </td>
      <td class="tdQuantite">61</td>
    </tr>

    <tr>
      <td class="tdQuantite"> Dell Latitude 5590</td>
      <td><input type="text" size="5" data="qte" name="QUANTITE_300" value="15" class="stock"> </td>
      <td class="tdQuantite">61</td>
    </tr>
    <tbody>
</table>
0 голосов
/ 21 ноября 2019

В функцию фильтра необходимо добавить параметры index и element . Затем из элемента param вы можете получить доступ к значениям ячейки. Что-то вроде этого должно помочь:

var Qte = $('#TableSelect tr:not(:first-child)')
         .filter(function(i, element){

            var cell1 = element.childNodes[0].value;
            var cell2 = element.childNodes[1].value;

            return $(this).val();
          });

Теперь вы должны получить значения, которые вам нужны, хотя предполагается, что ваш селектор jQuery возвращает соответствующие элементы.

Вы можете вставьте эти значения в массив, если вы хотите их сохранить. Что можно сделать так:

//outside the function
var values = [];

//from inside the function
var textAndValueArray = [cell1, cell2];

values.push(textAndValueArray);
return;

Теперь у вас есть массив массивов, содержащих ваш текст и значение. Теперь это дает вам простой способ зацикливания этих значений, и вы знаете, что в каждом индексе массива есть массив текста и значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...