Как найти индекс отправленных данных при использовании.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
});
ИЛИ ЖЕ
Если вы используете формы в своей таблице, оберните поле ввода, скрытое поле и кнопку отправки в отдельную форму, и он будет передавать ваш индекс по значению поля ввода.