Как найти индекс отправленных данных при использовании.map

Я использую метод Array.prototype.map(), чтобы отобразить массив в таблицу. Эта таблица также содержит поле ввода и кнопку отправки для каждого экземпляра вывода Array.prototype.map(). Как я могу отследить, какая позиция в массиве была отправлена, или это невозможно?

<tbody>
         <% qryData.map(function(item,i){%>
          <tr>
            <td>
                <%=item.SystemID%>
            </td>
             <td>
                <%=item.SystemName%>
             </td>
              <td>
               <input  type="text" name="txtLabID"  size="12" maxlength="20"> 
              </td>
               <td align="center">
                 <button type="submit" name="AddUpdate" class="btn btn-sm btn-primary">Save</button>
                  <input type="hidden" name="itemIndex" value="<%=i%>"/>
                </td>
              </tr>
              <% })%>
 </tbody>

2 ответа

Я не уверен, как выглядит ваша функция карты, но вы можете отслеживать индекс массивов при манипулировании ими с помощью .map метод.

var numbers = [1, 5, 10, 15];
numbers.map(function(number, index) {
   console.log('number: '  + number + ' index:' + index);
});
//OUTPUT
// number: 1 index:0
// number: 5 index:1
// number: 10 index:2
// number: 15 index:3

Почему бы вам не добавить data-index атрибут каждой кнопки отправки и поймать событие отправки, чтобы извлечь это data-index и добавить к данным, которые вы отправляете на сервер?

если у вас есть

<td align="center">
  <button type="submit" name="AddUpdate" data-index=<%= i %> class="btn btn-sm btn-primary">Save</button>
</td>

тогда вы можете сделать

$('table button').on('click', function() {
  let index = this.data('index')

  // send your request here
});

ИЛИ ЖЕ

Если вы используете формы в своей таблице, оберните поле ввода, скрытое поле и кнопку отправки в отдельную форму, и он будет передавать ваш индекс по значению поля ввода.

Другие вопросы по тегам